タグ

2013年10月14日のブックマーク (1件)

  • GADTによるHaskellの型付きDSLの構築 - プログラミングの実験場

    GADTについて、この解説が分かりやすい(英語)。 http://en.wikibooks.org/wiki/Haskell/GADT 背景 Haskell(というか関数型言語一般)の素晴らしい機能の一つ、代数的データ型を使うと、抽象構文木(AST)をHaskellの枠組みの中で表現できる。 例えば、整数の足し算・引き算ならば、 data Exp = Const Int | Add Exp Exp | Subtract Exp Exp さらにこのASTを数値一般に使いたいので型パラメータrをつけて多相にしてみる。 data Exp r = Const r | Add (Exp r) (Exp r) | Subtract (Exp r) (Exp r) これを使えば、例えば(3 + 4) - 2という数式は、Subtract (Add (Const 3) (Const 4)) (Const

    GADTによるHaskellの型付きDSLの構築 - プログラミングの実験場
    igrep
    igrep 2013/10/14
    “GADT(Generalized algebraic datatype)とは、多相のデータ型に対し、データコンストラクタの型を特化することができる仕組み(というのが私の理解)”