OCamlと関数型プログラミングを学ぶ包括的な教科書がオンラインで無料公開され、言語の厳密な入門に興味のあるプログラマーの注目を集めている。「OCaml Programming: Correct + Efficient + Beautiful」はコーネル大学CS 3110「データ構造と関数型プログラミング」の教科書であり、Michael R. Clarkson、Robert L. Constable、Nate Foster、Dan Grossman、Dexter Kozen、Greg Morrisett、Andrew C. Myersらローテーション制の教員陣によって20年以上の講義迭代を経て開発された。Clarksonは統一教科書版の主要コンパイラ著者であり、2021年秋版で単語とコードトークンの約40%を寄与した。

この記事は教科書とその著者を紹介しており、表紙画像は議論の対象となる作品を直接示している。
この本はクリエイティブ・コモンズ 表示-非商用-改変禁止 4.0 国際ライセンスの下で公開されており、無料で読んだり共有したりできるが、改変や商用利用はできない。2026年秋版が最新版で、cs3110.github.io/textbook にホストされている。

この段落はCC BY-NC-ND 4.0の条件を説明しており、ライセンスバッジが参照された具体的なライセンスを視覚的に確認できる。
多くの入門プログラミング教科書と異なり、この本は最初から仕様と正しさを中心に置く。第8章では仕様をクライアントと実装者の間の契約として導入し、通常OCamlインターフェースファイル(.mli)のコメントとして記述する。仕様には事前条件(requires節)で関数が期待する入力を、事後条件(returns節)で保証する出力を定義する。この本は良い仕様は「クライアントにとって無用な実装を排除するほど十分に制約的であり、かつクライアントにとって有用な実装を排除しないほど十分に一般的でなければならない」と強調する。このアプローチにより、モジュール的推論を可能にする抽象化バリアが生まれる:クライアントは仕様で保証されていない実装詳細を仮定できず、実装者はクライアントコードを壊すことなく内部を変更できる。
関数ドキュメントは構造化されたレシピに従う。returns節は結果を記述する——例えば「[sqr x]は[x]の平方根である。相対誤差は1.0e-6を超えない」。requires節は定義域を制限する:「Requires: [x >= 0]。」関数が全関数(すべての入力に対して定義される)であるべき場合、本は例外を投げることを推奨する。なぜなら番兵値は「壊れやすく読みにくいクライアントコードを促進しやすく、Unixオペレーティングシステムとその子孫において無数のバグとセキュリティ問題の原因となってきた」からである。raises節はどの例外がどのような条件で投げられるかを文書化する。
この教科書は200以上の埋め込みYouTube動画を含み、読書とは独立して視聴でき、プレイリストに整理されている。内容は関数型プログラミング、データ構造、正しさの証明、テスト、ソフトウェアエンジニアリングの原則をカバーし、OCaml構文だけにとどまらない。純粋な言語チュートリアルよりも野心的で、プログラムをどう推論するかを教えることを目指している。
一部の読者は、完全なプログラミング未経験者にはペースが急で難しいと指摘する。この本は基本的なプログラミング概念に馴染みがあることを前提とし、速やかに意味論、仕様、データ構造へ進む。ある程度の背景を持つ読者には、OCamlと関数型プログラミングを厳密に学ぶ最高のリソースの一つとして広く賞賛されている。
OCaml自体は関数型、命令型、オブジェクト指向スタイルをサポートする多パラダイム言語であるが、教科書は関数型コアを強調している。強力な静的型システムと型推論、代数的データ型、パターンマッチング、ファンクタによるモジュールシステムを備え、これらの機能により仕様はコンパイラによってかなりの程度表現可能かつ強制可能である。