[racket] "if" and internal definitions
Ok, but why is "cond" defined to behave differently? I expected "cond" to
behave the same as "if".
Justin
On Mar 16, 2014 4:59 PM, "Jens Axel Søgaard" <jensaxel at soegaard.net> wrote:
> The problem is that begin does not introduce a new scope.
> You can use (let () ...) or block instead.
>
>
> http://docs.racket-lang.org/reference/block.html?q=block#%28form._%28%28lib._racket%2Fblock..rkt%29._block%29%29
>
> /soegaard
>
>
> 2014-03-16 21:38 GMT+01:00 Justin Zamora <justin at zamora.com>:
> > What is the reason for not allowing internal definitions in the "then"
> and
> > "else" parts of an "if"?
> >
> > This fails with "define: not allowed in an expression context":
> > (if (< 3 4)
> > 5
> > (begin
> > (define a 7)
> > a))
> >
> > But the equivalent "cond" works fine:
> > (cond
> > [(< 3 4) 5]
> > [else (define a 7)
> > a])
> >
> > I notice that the expansion of "cond" encloses the clauses inside
> > (let-values () ...). Why doesn't "if" allow this?
> >
> > Justin
> >
> > ____________________
> > Racket Users list:
> > http://lists.racket-lang.org/users
> >
>
>
>
> --
> --
> Jens Axel Søgaard
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.racket-lang.org/users/archive/attachments/20140316/44d31f5f/attachment.html>