訳あってOCaml

まさか自分が OCaml を勉強するとは全くもって思っていなかったんだけど、訳あって只今 OCaml 勉強中。

というのも「最新コンパイラ構成技法」を読んでいて、その原著が「Modern Compiler Implementation in ML」。「Modern Compiler Implementation in C」でもないし、ましてや「Modern Compiler Implementation in Java」でもない。MLなの。ML。
で、その本の二章に ML-Lex という ML 向けの字句解析器が登場し、あーやっぱりML書けないとダメかと思うに至り、幸い Ubuntu なら ml-lex や ml-yacc、smlnj(Standard ML of New Jersey) のパッケージはあるんだけど、でもどうせならもっと実用的なのがいいなと思って OCaml に行き着いたと。いろいろ特殊に感じるところはあるけれど、独特な関数の書き方なんかもそんなに苦にならない。前に Erlang やったからかな。おかげでようやく関数型プログラミング言語像がイメージとして捉えられるようになってきたっぽい。

最新コンパイラ構成技法

最新コンパイラ構成技法

最新コンパイラ構成技法

原著のModern Compiler Implementation in ML
Modern Compiler Implement in ML

Modern Compiler Implement in ML

Cバージョン
Modern Compiler Implement in C

Modern Compiler Implement in C

Javaバージョン
Modern Compiler Implementation in Java

Modern Compiler Implementation in Java

それとは別に字句解析器と構文解析器の使い方を勉強。
Lex & Yacc

Lex & Yacc (A Nutshell Handbook)

Lex & Yacc (A Nutshell Handbook)

Flex & Bison
flex & bison: Text Processing Tools

flex & bison: Text Processing Tools

Building Parsers With Java などを参考にしつつ。
Building Parsers With Java™

Building Parsers With Java™

あとは Lua のレクサとパーサのソース読んでみたり。
前途多難だけど、こういういかにもCSっぽい勉強ってしたことがなかったのでそれなりに楽しめる。