型推論で悩む
今のところの案を整理しながら書いてみると…
次のようなプログラムをパースすることを考える:
class List { export method <Int> count (); } class Integer { export method <> print (); export method <Integer> op_add (<Integer> lhs, <Integer> rhs); export method <Integer> op_sub (<Integer> lhs, <Integer> rhs); export method <Integer> op_mul (<Integer> lhs, <Integer> rhs); export method <Integer> op_div (<Integer> lhs, <Integer> rhs); } class TestApp { method wrap (a) { a } method add (x, y) { x + y } export method <Integer> main (<List> argv) { List count print wrap((x + y) print) 0 } }