【SICP】計算機プログラムの構造と解釈【Scheme】
at TECH
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