Haskell, как использовать новый квазицитатор с 4 аргументами

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

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


person gatoatigrado    schedule 26.07.2011    source источник
comment
Не могли бы вы просто установить новый на undefined? (Не уверен, что это работает, очень мало опыта с квази)   -  person alternative    schedule 27.07.2011


Ответы (2)


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

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

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

person C. A. McCann    schedule 26.07.2011

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

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

person porges    schedule 26.07.2011