パッチ置いといた
パッチはここよ。
リリース段階でも何でもないので。期待しないほうが良いです。コンパイルの仕方は
- 慣れ
- 根性
コンパイルできた場合は今までのエントリと gcamltests/*.ml から推測してみて下さい。うまく動かない場合は、おかしいなー、などと思わずに、即座に
- バグ
- 未実装
- 未考慮
の内一つなのだろうとあきらめる事が吉。
さあ牛だ!、じゃなくて、さあ明日は仕事だ!おやすみなさい。
追記: 現時点でのぬるーい overload resolution
$:P2.name P1.t -> という型の時、
- P1.t の実装が signature で隠されていて、 "t" という名前
- モジュール P1 に P2.name という P2.name t の型を持つ値がある場合
に発生します。例えば、
module M = sig type 'a t val int : int t val float : float t end = struct type 'a t = 'a -> 'a -> 'a let int : int t = (+) let float : float t = (+.) end
こんな時。'a t が 'a -> 'a -> 'a である事を利用するには 'a t の実装を知ってないといけないので、let plus : $:'a t -> 'a -> 'a -> 'a = fun $:d -> d という定義は M の中で定義されなければいけなくなります。
この辺は 30分で実装したから堪忍してください。