【SICP】計算機プログラムの構造と解釈【Scheme】 at TECH
[2ch|▼Menu]
326:デフォルトの名無しさん
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

5044日前に更新/185 KB
担当:undef