GCaml

GCamlでやってみた。自明な例ですが。 # let x = generic 1 | 1.0;; val x : [| int | float |] = <generic> # x;; - : { 'a < [| int | float |] } => 'a = <generic> # let y = generic 2 | 2.0;; val y : [| int | float |] = <generic> # x+y;; - : int = 3 # x+.y;; - : float = 3.</generic></generic></generic>…

genericでコンパイルできずに落ちる例とか、直感的ではないinstanciationが行われる例とか見つけたので、明日書こう。

# let f = generic :int->int->int => fun x y -> x+y |:int->int => fun x -> x;; val f : [| int -> int -> int | int -> int |] = <generic>int->int->intとint->intがある関数に、intを一つだけ与えるとどうなるのか試してみる。</generic>

overloadingの価値

いやーいーわ、これ。あとは変なバグが残ってないことを祈るだけ。

overloadingが欲しくてたまらないので、gcamlを使いたい。とりあえずOCamlMakefileでgcamlを使う方法を考える。なにも難しいことは無く、 OCAMLC:=gcaml OCAMLDEP:=gcamldep OCAMLYACC:=gcamlyacc OCAMLLEX:=gcamllexとinclude OCamlMakefileの前にMakefile…

GCamlの二段構えで型付けを行う戦略はかっこいいと思った。普通の型システムは型付けを1passで行うが、別に1passで行わなくてはならない理由はない(と思う)。

http://pauillac.inria.fr/~furuse/publications/jfla2001.ps.gzとりあえず ML is a great language. まで読んだ。これ、かっこいい。 Ruby is a great language. とか書いて見たいもんだ。