2009-11-17から1日間の記事一覧

トップレベルじゃないところで再定義

再定義って言っていいのかわからんけど。 gosh> (let ((car cdr)) (car '(foo bar baz))) (bar baz) gosh> (let ((car cdr)) (define first (lambda (l) (car l))) (first '(foo bar baz))) (bar baz) gosh> (car '(foo bar baz)) foo この前のfirstの結果と…

リテラルで書けないオブジェクト

手続きなどのリテラルが書けないものは、名前をつけて捕まえておかないと、参照できなくなってしまう。 だから、consやらlambdaやらは「定義によって設定されたものでないトップレベルのバインド」(id:yagiey:20091116:1258342949のコメント参照)にしない…

束縛されているかどうか

昨日、add-nをdefineするときにエラーにならなかった。 何故なのか、ド素人なりに考えてみた。 lambda式を評価して手続きオブジェクトを作成するとき、出現した変数が束縛されているか否かは、トップレベルまで見に行けば決定できる。 (define mul (lambda (…