Вот косвенный ответ. Неопределенность вашего вопроса указывает на то, что вы можете быть новичком в Хаскеле, простите меня, если я ошибся.
Графики не очень хороши для работы в чистом FP, особенно по сравнению с тем, с какими хорошими алгебраическими типами данных (ADT) нужно работать. ADT - это обычный способ представления абстрактного синтаксиса, которым, в свою очередь, обычно манипулируют и оптимизируют компиляторы (до тех пор, пока вы не начнете генерировать машинный код, когда графики все больше начинают играть роль).
Вот ADT для очень простого императивного языка, чтобы подогреть аппетит:
data Statement
= Assign String Expr
| Print Expr
| If Expr Statement Statement
| Block [Statement]
data Expr
= Variable String
| Add Expr Expr
| Multiply Expr Expr
| Constant Integer
Обычный способ сделать язык - определить подобный тип, соответствующий возможностям вашего языка, и организовать большую часть работы вокруг этого типа. Вы используете парсер , чтобы получить реальный исходный код для этого представления.
Я слышал хорошие новости о Создание схемы за 48 часов как введение в Haskell, так и простая реализация языка программирования с использованием стандартных инструментов.
Помимо этого, Реализация функциональных языков: учебное пособие (Саймон Пейтон Джонс, главный парень из GHC, и Дэвид Лестер) подробно расскажет о мельчайших подробностях реализации специфически Haskell-подобных языки. Это с 1992 года, и язык развивался во многом, как и новые методы, открытые с тех пор, но книга все же должна дать много рекомендаций.
Удачи!