バルーンアートで犬や像を作るようにプログラミング言語を作ってしまう男のページ
幻のページ「プログラミング言語動物園」が再浮上した:
http://www.andrej.com/plzoo/
スロバニアのLjubljana(何で発本するんだ?)大学のAndrej Bauer教授による。
別にオンラインから消滅したんじゃないけど、redditで2ー3年前にこのページを見付けてそのうち読もうと思っていたらブックマークを無くしてしまい、その後何度も探したけど見付からなかったものだ。
評価は遅延評価それともeager? 実行はインタプリタそれともコンパイラ? 関数はfirst-classにする? OOは?
プログラミング言語をオブジェクト(作る対象物)としてしまうこのメタ態度が衝撃的だ。全て800行以内で作れてしまうOCamlの威力も凄い。いつかこのページにあるものを全て理解できるようになりたい。
calc
- 簡単な電卓
miniml (小さなML)
miniml+error
- 上のにゼロ除算エラーを追加
- エクセプションの出発点になるのかな
poly
- 上のminihaskellに「parametric polymorphism」を追加した
- 772行
sub
- eagerな(非遅延評価)純粋関数型言語
boa
- オブジェクト思考、非遅延評価、first-classな関数、動的な型
- クラスは無し
- 全てがオブジェクト: 一つのvalueが整数、ブール、関数、レコードなどの振舞をこなす。こういうのを「intersection types」と呼ぶらしい。
levy
- 「call-by-push-value」という評価方式
- 何が何時評価されるかが細かく制御できるらしい
miniprolog
- 小さなProlog