2009/05/10

[scheme]束縛変数と自由変数

WS0746

大事なことなんだな、これ。下記のS式とその実行結果を見てテンパった。よく見ればわかることだけどハマりそう。

 

P.24 ラムダ式

  1. (((lambda (x)
      (lambda (x)
        (+ x 1))) 2) 4)
    ;; => 5

  2. (((lambda (x)
        (lambda (y)
          (+ x 1))) 2) 4)
    ;; => 3

 

1.は最初のlambdaでxが束縛された後にさらにネストしたlambdaにxが束縛されているので

((lambda (x)
  (lambda (x)
    (+ x 1))) 2)

が評価されるときに内側のxが2には置き換わらないということですね。

最初のxと二つ目のxは別物と考えてもよさそうです。

 

2.の方は

((lambda (x)
    (lambda (y)
      (+ x 1))) 2)

が評価される時点で(+ x 1)が(+ 2 1)に評価されるわけですね。

 

 

Schemeによる記号処理入門

Schemeによる記号処理入門

posted with amazlet at 09.05.10

猪股 俊光 益崎 真治
森北出版
売り上げランキング: 305671

Amazon.co.jp で詳細を見る

0 件のコメント:

コメントを投稿