def foo(x,y)
  return x+y
end

foo(1,2)
foo("hello","world")

がうまく型付けできないのは、polymorphic methodの問題と言うらしい。

OCamlをベースにして考えるときにはOCamlNG集(http://www.math.nagoya-u.ac.jp/~garrigue/papers/ocaml-ng.pdf)が便利だと思った。Jacques先生のスライドで、OCamlでできないことがまとめてある。

とか思ったけど、intとかstringがbase typeじゃなくてオブジェクト(レコード型)になっていればべつに大丈夫なのか。