2010-04-07から1日間の記事一覧

条件分岐を一部実装した

こんな感じのコードが実行出来る様になった。 import stdlib; fib: (n) { if (n) { return n * fib(n-1); }; return 1; }; export main: () { exit(fib(3)); }; if(n)の部分はまだ比較演算子を実装していない為。 コンパイルすると _fib.LT1ii: pushl %ebp m…

大域脱出する関数の型

例外やexitなどの関数の型をどう扱えば良いか困った。OCamlだと val exit : int -> 'a Haskellだと exitWith :: ExitCode -> IO a みたいに多相型を返して任意の型と単一化できるようにするのが普通のようだけど、rowlはreturnで値を返すのでこれができない…

分割コンパイルができるようになった

export/import/external宣言を実装した. (% test.rl %) export type hoge : A | B (int) ; export plus: (x, y) { return x + y; }; みたいなコードをコンパイルするとヘッダファイルが自動生成される. (% test.rli generated by rlc1 %) type hoge : A | …