関数型言語の実装のチュートリアル
関数型言語を実装するときに参考になるウェブ上の資料 「プログラミング言語処理系テキスト」の中で、OCamlのサブセットである言語MiniMLのインタプリタとコンパイラをOCamlで作る。 目次(一部):
3章: 型無し MiniML インタプリタの実装
4章: 型推論機能付き MiniML インタプリタの実装
5章: MiniML コンパイラの実装
プログラミング言語MLのサブセット「MinCaml」のコンパイラをOCamlで作る。 目次(一部):
字句解析
構文解析
型推論
K正規化
α変換
β簡約
ネストしたletの簡約
インライン展開
定数畳み込み
不要定義削除
クロージャ変換
仮想マシンコード生成
13 bit即値最適化
レジスタ割り当て
アセンブリ生成
目次:
1 The Core language
2 Template instantiation
3 The G-machine
4 TIM: the three instruction machine
5 A Parallel G-machine
6 Lambda Lifting
純粋関数型Lisp方言であるLispKit LispのインタプリタとSECD抽象機械の機械語へのコンパイラを作成する。 タネ本はHendersonの「Functional Programming - Application & Interpretation」で、この本に載っているISWIMやPascalのコードを大体なぞるようにPythonで書いていく。 Racket上に実装された独自言語plaitでプログラミング言語SMoL(Standard Model of Languages)を作り、それに様々な機能を追加していく。 Structure and Interpretation of Computer Programs (SICP) Scheme のサブセットのインタープリタとコンパイラを Scheme で作る。4章と5章。SICPも参照。 4 Metalinguistic Abstraction
4.1 The Metacircular Evaluator
4.2 Variations on a Scheme -- Lazy Evaluation
4.3 Variations on a Scheme -- Nondeterministic Computing
4.4 Logic Programming
5 Computing with Register Machines
5.1 Designing Register Machines
5.2 A Register-Machine Simulator
5.3 Storage Allocation and Garbage Collection
5.4 The Explicit-Control Evaluator
5.5 Compilation
目次:
First Steps: Compiling and running
Parsing
Evaluation, Part 1
Error Checking and Exceptions
Evaluation, Part 2
Building a REPL: Basic I/O
Adding Variables and Assignment: Mutable State in Haskell
Defining Scheme Functions: Closures and Environments
Creating IO Primitives: File I/O
Towards a Standard Library: Fold and Unfold
Conclusion & Further Resources
Answers to Exercises