Shiro Kawai
shiro****@lava*****
2004年 4月 26日 (月) 12:00:59 JST
From: Kouhei Sutou <kou****@cozmi*****> Subject: [Anthy-dev 784] named let Date: Mon, 26 Apr 2004 00:00:39 +0900 (JST) > 普通(?)はnamed letをどう展開するかわからなかったので, > > (let loop ((n1 a1) > (n2 a2) > ...) > body) > > を > > (letrec ((loop (lambda (n1 n2 ...) > body))) > (loop a1 a2 ...)) > > というように展開するようにしました. loop自身はa1, a2 ... の評価スコープに入ってはいけないので、 これだとちょっとまずいです。正しくやるには例えばこうします: ((letrec ((loop (lambda (n1 n2 ...) body))) loop) a1 a2 ...) 検証するには、例えば次の式を評価してみてください。 (let - ((x -)) (x 1)) ;;=> -1 --shiro