Я смотрел на Haskell, и мне очень хотелось бы написать в нем компилятор (в качестве обучающего упражнения), поскольку многие его внутренние функции могут быть легко применены к компилятору (особенно к компилятору с рекурсивным спуском).
Что я не могу понять, так это то, как представить грамматику языка в стиле Haskell-ian. Моей первой мыслью было использовать определения рекурсивных типов данных, но я не понимаю, как я использую их, например, для сопоставления с ключевыми словами в языке («если»).
Мысли и предложения приветствуются,
Пит