Sugoku Iikanjini Chouga Ponkotsu
lambda式になりたいからSICP読むよ。
cocos?
よくわかんない。
いや、ほんとに、よくわかんないんですよ。
なんとまだworldにhelloできていないので、書くことないんです。
がんばります。
じゃあなんでSICPなのかっていうと、
全然関係ないんだけど、なんていうか、
この本の内容理解できたら人生が楽しくなりそうじゃないですか?
逆か?
まあ御託は置いといて1.1.5の作用的順序と正規順序ですが、
まず1.1.4の通りにfがdefineされているとして、(f 5)をそれぞれの順序で評価すると、まず、
(sum-of-squares (+ 5 1) (* 5 2))
まではどちらも一緒。
一緒というのは、どちらの順序でも"fってなに?"が解決したらその後すぐにaに5がはいるってこと?かな?って思ったけど、
そもそもここでのお話は解釈系の実際の働きを述べるものではないとのことなので、なんとなく流しておく。
ここで大事なのは、"被演算子に出会う度にそれを評価する(作用的順序)"評価の仕方だけじゃなくて、"基本的演算子だけになるまで演算子を評価しちゃってから、出てきた被演算子を全部評価する(正規順序)"やり方もあるよ、てことなのかな?
理解が追いついているかわからんが、実際に問題1.5で考えてみると、
・作用的順序
(test 0 (p))
(if (= 0 0)
0
(p))
(if (= 0 0)
0
(p))
...
つまり、(p)の評価がループしてるのでifの評価にたどり着かないってことかな?
一方正規順序で考えてみると、
・正規順序
(test 0 (p))
(if (= 0 0)
0
(p))
0
つまり、(p)とはなんぞや?という解釈が必要になる前にifの評価により0という出力が得られるため、
無限ループなんてなかったんや、ということになるのかな。
こんなペースで読んでたら絶対読み終わらないのぜ……!!!
あ、ちなみに僕が読んでるのはピアソンの日本語版初版です。