2011-04-01から1日間の記事一覧

JavaScript による型推論器の実装:多相型

前:型変数と単一化 目次 次:let と let rec 中身のない型変数 前回の例では、すべての型変数(Var オブジェクト)に型が代入されました。しかし、以下の場合はどうでしょう。 fun x -> x関数の本体に手がかり(関数適用など)がありませんから、x の具体的…

JavaScript による型推論器の実装:型変数と単一化

目次 次:多相型 未知の型 型推論の肝は、未知の型の扱いです。 例えば、 fun x -> x * 2という式の型推論をする際、仮引数 x の型は指定されていませんから未知です。関数の本体を見て「x は * の左辺に現れる」という情報を見つけることで初めて x の型が …

JavaScript による型推論器の実装

型推論に興味はあるけど、抽象的な説明が多く難しそうだと思っている方々。基礎的なことを押さえておけば、型推論器は簡単に実装できます。 ここでは、私が JavaScript で書いた型推論器を例に、型推論の基本的なアルゴリズムの一例を具体的に説明していきま…

Ibis クイックチュートリアル

Ibis Interpreter 四則演算 > 1 + 2 * 3 - : int = 7 > (1 + 2) * 3 - : int = 9 変数 > let x = 123 - : int = 123 > x - : int = 123 関数 > let double = fun x -> x * 2 - : (int -> int) = <closure> > double 2 - : int = 4 再帰関数 > let rec fac = fun n -> </closure>…

JavaScriptで型推論器を作りました

JavaScriptで型推論付き静的型付け言語のインタプリタを作成しました。これは、サイボウズ・ラボユースのメンバーとして開発をさせていただいたものです。ライセンスは MIT License です。Ibis Interpreter GitHub型推論の実装方法を解説するため、メジャー…