私は Haskell を見てきましたが、(学習課題として) Haskell にコンパイラを書きたいと思っています。なぜなら、Haskell の生得的な機能の多くは、コンパイラ (特に再帰降下コンパイラ) に簡単に適用できるからです。
私がよく理解できないのは、Haskell 流の方法で言語の文法を表現する方法です。私が最初に考えたのは、再帰的なデータ型定義を使用することでしたが、たとえば言語のキーワード (「if」) と照合するためにそれらを使用する方法がわかりません。
考えや提案は大歓迎です。
ピート