グラフ還元を備えた小さくて怠惰な関数型プログラミング言語の実装を開始するための実用的なリファレンス(実際の例を含む)はありますか?字句解析と構文解析の手順を含むリファレンスが特に役立ちます。
これまでのところ、サイモンペイトンジョーンズによる機能プログラミング言語の実装とWizard本(SICP))のほとんどを読みました。
SPJは、非常によく似たタイトルの2冊の本を書いています。
両方とも利用可能です ここ 。 2つ目は、第3章のGマシンを含め、コードのコンパイルと実行に重点を置いています。概要の引用:
この本の主な内容は、コア言語と呼ばれる小さな関数型言語の一連の実装です。コア言語は可能な限り小さく設計されているため、実装は簡単ですが、効率を損なうことなく最新の非厳密な関数型言語をコア言語に翻訳できるほど豊富です。これについては、第1章で詳しく説明します。この章では、コア言語用のパーサーとプリティプリンターも開発しています。
付録Bには、本全体でテストプログラムとして使用するためのコア言語プログラムの選択が含まれています。
本の本文は、コア言語の4つの異なる実装で構成されています。
- 第2章では、テンプレートのインスタンス化に基づいた最も直接的な実装について説明します。
- 第3章では、Gマシンを紹介し、プログラムを命令のシーケンス(Gコード)にコンパイルして、さらにマシンコードに変換する方法を示します。
- 第4章では、評価モデルがGマシンの評価モデルとは大きく異なる別の抽象マシンであるThree Instruction Machine(TIM)に対して同じ演習を繰り返します。 TIMはGマシンよりも最近開発されたため、他の文献はほとんどありません。したがって、第4章には、Gマシンに与えられたものよりも、TIMの評価モデルのかなり詳細な開発が含まれています。
- 最後に、第5章では、並列Gマシン用の関数型プログラムをコンパイルする方法を示すことにより、新しい次元を追加します。
これらの実装のそれぞれについて、コンパイラとマシンインタプリタの2つの主要部分について説明します。コンパイラーはコア言語プログラムを受け取り、それをマシンインタープリターによる実行に適した形式に変換します。
.。