The value in the large comes when the data structures are more complex (in the function below you'd use a loop or filter, of course). When they are larger, you can pinpoint where to change your function based on a change to your data definition.
For example, consider writing an interpreter. Now imagine the language changes in some way -- you can read off where exactly to change the interpreter. Robby On Wed, Nov 10, 2010 at 10:02 AM, namekuseijin <namekusei...@gmail.com> wrote: > 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: >>>> ;; NOW I'M A STUDENT: >>>> >>>> ;; 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: > http://lists.racket-lang.org/listinfo/dev > _________________________________________________ For list-related administrative tasks: http://lists.racket-lang.org/listinfo/dev