[racket] Why choose the 'let*' construct over the 'define' construct when both can have sequential scope?
But in such situations you can be vicious and abuse `let` to have your
`define`s:
(let ()
(define x 3)
(define y 4)
(list x y))
It's even more vicious if you use `let*` instead of `let`, but quite less
if you use `begin` instead ;)
On Thu, Feb 19, 2015 at 5:49 PM, Matthias Felleisen <matthias at ccs.neu.edu>
wrote:
>
> 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 <infodeveloperdon at gmail.com>
> 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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20150219/08ef564d/attachment.html>