タグ

GADTに関するdaimatzのブックマーク (2)

  • PHOAS - Parametric Higher Order Abstract Syntax - を Haskellで - keigoiの日記

    当該タイトルの論文は http://dx.doi.org/10.1145/1411203.1411226 論文では Coqで書いてあるが、同じことが Haskell (+GADT) でもできるようで、Haskell-cafe に投稿されていた: http://www.mail-archive.com/[email protected]/msg48913.html HOASとは http://en.wikipedia.org/wiki/Higher-order_abstract_syntax コンパイラやインタプリタ等で(?)、 ターゲット言語のλ式やlet文みたいな 変数束縛を ホスト言語のλ式で表現してやろうぜというお話 変数の管理をしなくてよいのが楽。 あと domain specific language の変数束縛をお手軽に実装したり PHOASとは HOASだと λ

    PHOAS - Parametric Higher Order Abstract Syntax - を Haskellで - keigoiの日記
  • Haskell+GADTで定理証明 その1: 型レベル自然数の等価性 - keigoiの日記

    実は、私のfull-sessionsというセッション型のライブラリは中で unsafeCoerce#を使っているので型安全でない。使ってくれる人にとってそれは心もとないだろうし、そもそもunsafeなんとかは、いけがみさんによればSPJとSimon Marlowしか使ってはいけないことになっているらしい。やっぱりHaskellを使うものとして型安全性くらいは保証したい。でも、かといって普通のHaskellではうまく型を付けられない。(Typeableクラスのキャストを使っても解決にはならない。) そこで、魔法のGADT。 この型とこの型はぜったい等しいのにーというのが文脈から明らかなとき、それを表現できるのがGADTだ…というのが私の理解。まさしく私のケースにぴったりだ。これを使えばunsafeCoerceなんか要らんかもしれない。 いいかえれば、いわゆる定理証明をGADTつきのHaske

    Haskell+GADTで定理証明 その1: 型レベル自然数の等価性 - keigoiの日記
  • 1