Ответ 1
Это проблема классическая для решения в Haskell.
- Определите абстрактное синтаксическое дерево для вашего языка.
- Определить красивый принтер (для генерации кода)
Для бонусных очков:
- Определить парсер
- Напишите хорошую библиотеку комбинаторов Haskell, чтобы вы могли вставлять цель в Haskell
- Напишите оптимизатор для абстрактного синтаксиса
В Hackage есть много, много примеров (например, этот).