前回の記事の注意。
実は、前回書いたtype class in coqの記事、ちょっと怖いことがある。
このコードを実行すると、メモリを消費したあげくに落ちる。
Check (Compile (CEConst 1)).
もちろんEval computeやEval simplでも同様。
なぜかはよくわからないが、まともにCompileの計算ができないらしい。
証明はできているし、項の作成も必ずうまくいくことがわかっているので、正しいことは正しいはずなのだが、なぜかうまくいかない。
原因不明なので、今は近寄らないのが吉。
追記:以下のコードが通るあたり、Compileの補完がまずいようだ。
Check (let (_, c) := (CEConst 1) in c). Check (let c := (CEConst 1) in Compile).
この補完、コードを書く上で山のように引っかかる箇所があるので、デフォルトでオンにするのをやめてほしいくらいなのだが・・・