純粋関数型言語の処理系を作ってみることにした
関数型言語というと型システムなどフロントエンド部に注目が集まりやすいと思いますが、私はバックエンドの実装に興味があります。
そこで小さな純粋関数型言語の処理系を作ることにしました。名前は安直ですがpurefにします。
方針
- 勉強用の実装
- 飾りは付けず極力シンプルにする
- ソースコードは全てブログに掲載する
- 実用的な物には多分ならない
- 型システムは作らない
- GC・VMは関数型言語だからといって特に特殊な部分はないので何かを流用する
- 実装はOCaml
教科書はこれです。
pdfで読めます。http://research.microsoft.com/en-us/um/people/simonpj/papers/slpj-book-1987/
Template Instantiationは簡単なので飛ばして、3章から入ります。
- 3章:G-machineを作る
- 4章:Three Instruction Machineを作る
- 6章:Lambda Liftingを実装する
という感じにします。Parallel G-machineは6章の後飽きてなければやってみます。
リポジトリ:http://github.com/nineties/puref