I see the reasoning now, I apologize.  It's a good choice for
students, not so sure about ye old daily buggy sofware maintenance.

OTOH, perhaps if this practice was widespread it would lead to less
bugs or at least more maintenable software.  At least for those aware
of this "idiom".

On Wed, Nov 10, 2010 at 1:44 PM, Matthias Felleisen
<matth...@ccs.neu.edu> wrote:
> On Nov 10, 2010, at 10:40 AM, namekuseijin wrote:
>> On Wed, Nov 10, 2010 at 12:13 AM, John Clements
>> <cleme...@brinckerhoff.org> wrote:
>>> ;; only-long-strings : (listof string) -> (listof string)
>>> ;; return a list containing the strings longer than 2 chars
>>> (define/noloop (only-long-strings l)
>>>  (cond [(empty? l) empty]
>>>        [else (cond [(< 2 (string-length (first l)))
>>>                     (cons (first l)
>>>                           (only-long-strings (rest l)))]
>>>                    [else (only-long-strings l)])]))
>> gosh, students do suck.  I guess you teach them to use cond because
>> it's a generalized if.  But then they proceed to use it just like if:
>> always two conditions per (verbose) cond! :p
>> then again, may be someone who had previous exposure to lesser languages...
> Perhaps you should ask before you critique.
> We insist on this style:
>  -- the outer cond corresponds to the structure of the data definition of the 
> input
>  -- the inner one signals decision relevant for the output
>        (I would use an 'if' for the inner one, but over N years of programming
>        as if a student might see my code one day, I have come to really, truly
>        like the unconditional use of cond for the layout purpose)
  For list-related administrative tasks:

Reply via email to