【SICP】計算機プログラムの構造と解釈【Scheme】at TECH
【SICP】計算機プログラムの構造と解釈【Scheme】 - 暇つぶし2ch326:デフォルトの名無しさん
07/07/09 17:43:50
>>324
letの初期値の評価順序=lambdaや関数の引数の評価順序だから
無関係ではない。このあいまいさを回避するにはlet*的な関数
呼び出しの定義が考えられる。
(define-macro (order-> func . args)
 (let ((tmp (map (lambda (_) (gensym)) args)))
  `(let* ,(map (lambda (x y) (list x y)) tmp args)
    (,func ,@tmp) )))

(order-> func a b c) ; 評価順序をa -> b -> cに強制する


>>314を議論する前に束縛対象(初期値)が関数以外の
letrec(=internel-define)について、エラーでないとしたら
どう扱うべきかを決めなければ先に進まない。
ちなみにr5rsではletrecの初期値の評価順序は未規定、評価時の
束縛変数への参照や代入はエラーとなっている。



次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch