[Anthy-dev 785] Re: named let

Back to archive index

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




Anthy-dev メーリングリストの案内
Back to archive index