タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

haskellとHaskellと型システムに関するigrepのブックマーク (4)

  • Haskellの型システム(+拡張)を実装して学ぶ

    導入 Mark P. Jones: Typing Haskell in Haskellという論文があります。この論文は、題通りHaskellでHaskellの型チェッカを実装するというものです。詳細な解説がされており非常にわかりやすく、また型システムの体系的な知識が無くても理解できるように構成されています。 しかしながら、この論文にはソースコードを入力にとって型チェックを行うまでに必要な実装の全ては含まれておらず、プログラムを入力に取って動作させるまでにはいくつかの変換や解析が必要です。Titan Type Checkerは、これら不足している機能(+拡張)を実装し、実際にスタンドアロンに動作する型チェッカを実装したものです。記事では、論文で解説されていない事柄を中心に振り返りたいと思います。 Typing Haskell in Haskellの動作まで 構文解析 (Parser.hs)

    Haskellの型システム(+拡張)を実装して学ぶ
  • Typing Haskell in Haskellを読んでみる - Qiita

    頭の中の整理も兼ねて、Haskellの型システムについて述べたM.P.Jones氏による論文Typing Haskell in Haskellについてまとめていきたいと思います。 ※少しずつ加筆しています Section 2 : Preliminaries 最初のIntroductionは省略させていただきました(興味があったらぜひ読んでみてください) ここでは早速Haskellのコードが出てきますね。 まず module TypingHaskellInHaskell import Data.List (nub,(\\),intersect,union,partition) import Control.Monad (msum)

    Typing Haskell in Haskellを読んでみる - Qiita
  • 非可述多相に触れる: GHC の ImpredicativeTypes 拡張 - Qiita

    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 -> Int) -> Int -> Int や double :: (String -> String) -> String -> String として使える forall を含む型 上記の double 関数の型における a は型変数で、任意の型を動くことができます。forall キーワードを使ってこのことを明示すると forall a. (a -> a) -> a -> a となります。(forall キーワードの利用には ExplicitForAll 拡張が必要です) さて、通常

    非可述多相に触れる: GHC の ImpredicativeTypes 拡張 - Qiita
  • Haskellの型システムを書く(1) - 純粋関数型技術メモ

    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束縛・リテラル,型は型変数・型コンストラクタ・関数型から成り立つ. 型ス

    Haskellの型システムを書く(1) - 純粋関数型技術メモ
  • 1