TAPL
その名の通り、型システムについての定番の入門書。ただし「研究者としての」入門書なので、間違ってもプログラミング初心者向けではない。yhara.icon 型理論系の研究室のゼミとかで読まれているイメージ。これを読むと型システムの論文を読めるようになる。yhara.icon 静的型検査をする言語を設計したいのであれば、前半は特に参考になるだろう。後半はいろんな型のカタログ的な感じなので興味があるところを読めばいい。yhara.icon 言語処理系を作っている人、特に静的型付きプログラミング言語のそれを作ってる人にはおすすめの「型システム入門書」takoeight0821.icon
yhara.iconさんと同意見。
末尾の訳語集と索引を組み合わせると、型システムに関わる専門用語集としても使える。takoeight0821.icon
Haskellとかをやってると、結構頻繁にテクニカルタームとして出くわす。takoeight0821.icon
静的型付き言語の型システムの設計をするための「入門書」としても読める。takoeight0821.icon
ジェネリクスと継承を組み合わせたときの問題点と解決策とか、モダンな言語を作ろうとするとハマりがちな点も書かれてるので、通読する・しないに関わらず、一家に一冊?置いておきたい本。takoeight0821.icon
TAPLと略すときと、TaPLと略すときがある。たぶんどっちでもいい。takoeight0821.icon
サンプルコードがほんのちょっと古いので、もしかするとOCamlコンパイラのバージョン依存な問題を踏むかもしれない。stringとbyteのうんぬんかんぬんだった気がする…takoeight0821.icon 以下takoeight0821.iconが上述したサンプルコードの問題の詳細(もし気が向いた人がいれば別記事に切り出してかまいません)
現在のOCamlには、変更不能な文字列を表すstringと、変更可能な文字列(バイト列)を表すbytesがあります。一方、古いOCamlでは、現在bytesと呼ばれているものがstringでした。TaPLのプログラムはその時代に書かれたので、現在のOCamlコンパイラでTaPLのプログラムをコンパイルするためには、stringの挙動を過去のものに戻す必要があります。そのオプションが-unsafe-stringなのですが、名前の通りこのオプションはunsafeなので、4.10.0以降のOCamlコンパイラでは、ビルド時に-unsafe-stringを許可するよう設定しなくてはいけません。というのがこの問題の詳細です。
opamを使っているなら、次のコマンドでocamlをビルドすることで-unsafe-stringオプションが使えるようになるはずです。4.12.0のところは他のバージョンに変えても動くはず。
$ opam switch create 4.12.0+default-unsafe-string --package=ocaml-variants.4.12.0+options,ocaml-option-default-unsafe-string
$ opam switch 4.12.0+default-unsafe-string