Would it be difficult to fix let so that I could reference other local variables like
(let (x (car L) y (car x) ...)
This would reduce the amount of nested lets like
(let (x (car L))
(let (y (car x))
...
What do you think about this one?
Eddie
do you mean let* (or letrec) ?
(set 'x 10)
(let ((x 3) (y (+ x 4)) (print y)) => 14
versus:
(letrec ((x 3) (y (+ x 4)) (print y)) => 7
Lutz
I would use the (letrec more. What is the difference between let* and let?
Eddie
'let*' and 'letrec' are the same thing, they are just differently named in different LISPs. I implemented is yesterday as 'letr', I thought 'letrec' is too long to type for a function which will be used by some people quite often so 'letr' it will be in version 8.2.6
Lutz
Thanks Lutz :)
Eddie
Quote from: "Lutz"
'let*' and 'letrec' are the same thing, they are just differently named in different LISPs.
Scheme has both let* and letrec, and they are not the same thing.
let* allows each expression to refer to variables defined above it. It guarantees that expressions will be evaluated in order. Common Lisp has the same let*.
letrec allows each expression to refer to any variable in the group, but all references must be made inside function closures - it must be possible to evaluate all expressions to values before binding any variable. Expressions may be evaluated in arbitrary order.
thanks for the clarification
Lutz