パスワードを忘れた? アカウント作成
476436 journal

Uminchuの日記: (define (foo bar) (hoge hage..) に気をつけろ!

日記 by Uminchu

(define (foo bar) (hoge hage..)
の様な形でいつも関数を定義していた。
一応、これがlambdaを使ったSyntax Sugarであることは
知っていたが、全く気にしていなかった。
しかし、SICP3.1.1のnew-widthdraw関数を試してみていて
いつものdefineが使えないことに気づいた

最初はこんな書き方をしていた
(define (new-widthdraw amount)
  (let ((balance 100))
    (if ... 続きは同様

だが、表示されるのは毎回100-amount。
んで、ちゃんと教科書通り書くとうまくいく。
なるほど。従来の書き方だと、束縛した関数が実行される環境を
コントロールできないことに気づいた。

今まで、「環境」はCで言う「スコープ」や「名前空間」
みたいなもんだと思っていたが、結構重要なのねと実感した。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...