letとletrec
letとletrecを区別しないで、単にletと書いてletrecの意味でいいじゃないか、と思っていたが、そうじゃないな。
let {x = y, y = x} in x は意味があるが、letrec {x = y, y = x} in x はワケワカラン。letを単なる置換演算子と考える発想は余りなかったのだけど、再帰とは一切関係なしのletを使うのは便利かもしれない。
僕が今まで考えていたletは実はletrecなので、表記法は考えなおさないといけないな。let, letrec, where, whererec とか使うのか? 他にmoduleとかget fromとか考えていて、
- get x form (module X) = letrec X in x
が基本。