Arantium Maestum

プログラミング、囲碁、読書の話題

TaPL

OCamlで存在型を試してみた(その4ーーGADT)

ここまで zehnpaard.hatenablog.com zehnpaard.hatenablog.com zehnpaard.hatenablog.com とモジュール関連の機能で存在型を扱う話をしてきた。 しかし、OCamlでもっとも直接的に存在型をエンコードしたいならGADTが使える。 ダメな例 まずはうまくいかない…

OCamlで存在型を試してみた (その3ーーモジュール)

シリーズ前々回と前回に続いて存在型を探っていく。 今回はパラメトリックな機構はまったく使わないただのモジュールと存在型について。 第1級モジュールやファンクタによる抽象化機能と存在型について書いてきたが、型としての「存在型」はどちらの場合で…

OCamlで存在型を試してみた (その2ーーファンクタ)

zehnpaard.hatenablog.com の続き。 前回は第1級モジュールを非常に綺麗に存在型に対応させられることが示せた。 しかし第1級モジュールを使わずとも、OCamlだとモジュールのシグニチャ自体が存在型的だ。(ただし微妙だが重要な差異もある) 今回はファン…

OCamlで存在型を試してみた (その1ーー第1級モジュール)

Types and Programming Languagesの24章の主題は存在型(Existential Types)である。 私は何回読んでもここでつまづく。 この章に到達するまでに部分型やら再帰型やら型推論やら全称型やら出てくるが、まあ難しくとも、なんとなくどういった言語機能に関連…

TaPLの公式実装をduneでビルドする時にハマったこと

非常に限定された一部界隈では非常に有名なことで有名なTypes and Programming Languagesの公式サイトから、本に出てくる型システムの実装がダウンロードできる: www.cis.upenn.edu 以前も気になった部分を落として実装を覗いてみたりはしたのだが、コンパ…