Haskell - как использовать новый квази-квотер с четырьмя аргументами - PullRequest
3 голосов
/ 27 июля 2011

Похоже, синтаксис квазиквотера изменился и теперь принимает 4 аргумента [ ссылка ]. Кто-нибудь использовал это еще? Благодарю. Я просто хочу создать что-то действительно простое, и примеры в Интернете не будут работать.

Заранее спасибо.

Ответы [ 2 ]

3 голосов
/ 27 июля 2011

Каждый фрагмент QuasiQuoter - это просто функция, которая принимает строку (содержимое квази-кавычки) и возвращает соответствующее значение в монаде Q.Если ваш квазиквотер не поддерживает использование в некоторых из этих контекстов, просто верните ошибку, например:

someQuoter = QuasiQuoter { quoteType = const $ fail "type context unsupported" 
                         , -- etc ...
                         }

Метод fail вызывает report True, что приводит к ошибке компилятора.Это в значительной степени правильное поведение.

2 голосов
/ 27 июля 2011

В основном изменения заключаются в том, что теперь вы можете делать квази-квотеры для типов и объявлений (в дополнение к выражениям и шаблонам).

Хорошо, если вы установите поля типа / объявления на error "This quasiquoter doesn't support splicing types/declarations", если вы не хотите их использовать.

...