2013-05-13 84 views

回答

6

最好的选择是读取let,let *和letrec的official R5RS descriptions

总之,但是:

(let ((x 2)) 
(let ((x 3) (y x)) 
    y) => 2 

(let ((x 2)) 
(let* ((x 3) (y x)) 
    y) => 3 

所以,让让之间的差异*:咱们都将对于绑定评估上述水平(因此它不会不管他们正在上市为了什么in),让*按顺序执行。 (let *((xa)(by)))等价于(let((xa))(let(by)))

另一方面,Letrec允许您绑定递归值。你可能会写一个递归函数,你只想在函数范围内,并使用letrec将它绑定到一个名字上。