In some places, you are allowed only one expression, and for that situation, you need let*.
On Feb 19, 2015, at 12:40 PM, Don Green <[email protected]> wrote: > What is/are the reason(s) for choosing the 'let*' construct over the 'define' > construct? > > (define (print-two f) > (let* ([_ (print (first f))] > [f (rest f)] > [_ (print (first f))] > [f (rest f)]) > f)) > > (define print-two > (lambda (f) > (print (first f)) > (set! f (rest f)) > (print (first f)) > (set! f (rest f)) > f)) > > (void (print-two '(1 2))) ;=> 12 > > ____________________ > Racket Users list: > http://lists.racket-lang.org/users ____________________ Racket Users list: http://lists.racket-lang.org/users

