Schemeの評価戦略
プログラミングGaucheを読んでいたら、
Schemeでは作用順序評価という方法を採用しています。
(中略)
作用順序評価は、手続き適用式の手続き引数を順に評価してから、手続きを評価するモデルです。
と書いてあった。
Schemeって最左最内評価で、一番左の手続きから評価するんじゃなかったかなぁ、と思ったのでGaucheで試してみた。
gosh> ((begin (display "proc ") (lambda (x y))) (display "arg1 ") (display "arg2 ")) arg1 arg2 proc #<undef>
やっぱり、Gaucheとは食い違わないわな。一応、R5RSの日本語訳も確認してみる。
4.1.3 手続き呼び出し
(中略)
手続き呼出しは,呼び出される手続きとしての式と,その手続きに渡される引数としての各式を,単純に丸カッコでくくることによって書かれる。演算子とオペランドの格式が(未規定の順序で)評価され,そしてその結果として得られた手続きに,結果として得られた引数が渡される。
順番は規定されていないっぽい。R5RSの原文まで追い掛ける気力はないので、ここまで。