これをもう一度見てみましょう...
((lambda (x y) (x y)) (lambda (x) (* x x)) (* 3 3))
フォームを評価するには、フォームの各部分を順番に評価します。フォームには 3 つの要素があります。これは最初の(機能)位置にあります:
(lambda (x y) (x y))
これは、フォームの 2 番目の要素であり、関数の最初の引数です。
(lambda (x) (* x x))
フォームの最後の要素なので、関数の 2 番目の引数です。
(* 3 3)
この場合、評価の順序は問題ではないので、左から始めましょう。
(lambda (x y) (x y))
Lambda は関数を作成するため、これは x と y の 2 つの引数を取り、x を y に適用する (つまり、1 つの引数 y で x を呼び出す) 関数として評価されます。これを call-1としましょう。
(lambda (x) (* x x))
これは、1 つの引数を取り、この引数の 2 乗を返す関数に評価されます。したがって、これを正方形と呼ぶことができます。
(* 3 3)
これは明らかに9に評価されます。
OK、この最初の評価の実行後、次の結果が得られました。
(call-1 square 9)
これを評価するために、2 つの引数squareと9を指定してcall-1を呼び出します。call-1を適用すると、次のようになります。
(square 9)
それがcall-1の機能であるため、最初の引数を 2 番目の引数で呼び出します。ここで、 9の 2 乗は81で、これは式全体の値です。