On Feb 21, 2012, at 7:18 AM, Rodolfo Carvalho wrote: > BTW I just found the nested-cond pattern appearing on HtDP, throughout > section 9: > http://htdp.org/2003-09-26/Book/curriculum-Z-H-13.html
That happens when you follow the HtDP design recipe directly and there are conditionals for two unrelated reasons, e.g. (cond [(empty? L) ...] [(cons? L) (cond [(snark? (first L)) ...] [(boojum? (first L)) ...] [(beeblebrox? (first L)) ...] )]) Yes, this COULD be collapsed into (cond [(empty? L) ...] [(snark? (first L)) ...] [(boojum? (first L)) ...] [(beeblebrox? (first L)) ...] ) but that doesn't match the data structure as transparently. Incidentally, if you want to bulletproof the above code against non-lists, the first version is easy: just add [else (error ...)] as a new third branch of the outer "cond". The second version doesn't bulletproof as neatly: you can either add [(not (cons? L)) (error ...)] as a new second branch of the "cond", or you can revert to the nested-cond structure. It's a judgment call, which can go different ways in different circumstances. Stephen Bloch sbl...@adelphi.edu
____________________ Racket Users list: http://lists.racket-lang.org/users