関数ポインタ実装
こんな感じのサンプルコードがコンパイル出来るようになった。dictionary passingへの布石。
plus: (a, b) { return a + b; }; f: () { return plus; }; export main: () { g : f(); syscall(1, g(1, 2)); };
ちゃんと型安全です。
syscall(1, g(1));
とか書くと
compile main.rl > parsing... > typing... ERROR: type mismatch (int,int) <-> (int)
こんな感じでエラーに。エラー行の管理を早い段階で放棄したのはちょっと後悔。