導入 Mark P. Jones: Typing Haskell in Haskellという論文があります。この論文は、題通りHaskellでHaskellの型チェッカを実装するというものです。詳細な解説がされており非常にわかりやすく、また型システムの体系的な知識が無くても理解できるように構成されています。 しかしながら、この論文にはソースコードを入力にとって型チェックを行うまでに必要な実装の全ては含まれておらず、プログラムを入力に取って動作させるまでにはいくつかの変換や解析が必要です。Titan Type Checkerは、これら不足している機能(+拡張)を実装し、実際にスタンドアロンに動作する型チェッカを実装したものです。本記事では、論文で解説されていない事柄を中心に振り返りたいと思います。 Typing Haskell in Haskellの動作まで 構文解析 (Parser.hs)
この記事では、マイナーGHC拡張の一つである ImpredicativeTypes について解説してみようと思います。これが必要になる場面はほぼないと思います。 ここのコード例は GHC 8.0.2 と 8.2.2 でテストしています。他のバージョンでの結果は保証しません。 まずは、非可述的 (impredicative) じゃない、通常の多相からおさらいしていきましょう。 多相 一つの関数やデータ型を任意の型に対してに適用できることを、(パラメーター)多相と呼びます。便利ですね! data Maybe a = Nothing | Just a -- Maybe Int や Maybe String, Maybe (Maybe Bool) などが使える double :: (a -> a) -> a -> a double f x = f (f x) -- double :: (Int -
Haskell Advent Calendar 2017 3日目の記事です. Haskellの型推論器を実装し,型システムへの理解を深める. GHC拡張には型に関するものも多いが,今回は触れず標準のHaskellに従う. Hindley-Milner 型推論 シンプルなλ式に対する多相型推論器を考える. 構文 data Expr = Var String | App Expr Expr | Lam String Expr | Let String Expr Expr | Num Int data Type = TVar TVar | TCon String | TArr Type Type type TVar = Int data Scheme = Scheme [TVar] Type 式は変数・関数適用・λ式・Let束縛・リテラル,型は型変数・型コンストラクタ・関数型から成り立つ. 型ス
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く