Модификация симпатичного принтера из haskell-src-exts - PullRequest
5 голосов
/ 10 июля 2010

В пакете haskell-src-exts есть функции для красивой печати на Haskell AST.То, что я хочу сделать, это изменить его поведение на определенных конструкторах, в моем случае, способом печати прагм SCC.Таким образом, все остальное должно быть напечатано по умолчанию, только SCC обрабатываются по-разному.Можно ли сделать это, не копируя исходный файл и не редактируя его, чем я сейчас и занимаюсь?

1 Ответ

2 голосов
/ 10 июля 2010

Ну, библиотека сделала одну вещь правильно, используя класс типов для Pretty.Задача состоит в том, как выбрать другой экземпляр для конструкторов, которые вы хотите печатать по-разному.В идеале вы должны просто ввести новый тип узла AST, который вам нужен, и каким-то образом подставить его в AST.

Теперь проблема в том, что Haskell AST, экспортируемый библиотекой, имеет фиксированную структуру типов.Он не использует, например, двухуровневые типы , которые позволят вам заменить новые типы на части дерева.Таким образом, вам придется переопределить тип AST вплоть до узла, для которого вы хотите изменить тип.

...