Каждый фрагмент QuasiQuoter
- это просто функция, которая принимает строку (содержимое квази-кавычки) и возвращает соответствующее значение в монаде Q
.Если ваш квазиквотер не поддерживает использование в некоторых из этих контекстов, просто верните ошибку, например:
someQuoter = QuasiQuoter { quoteType = const $ fail "type context unsupported"
, -- etc ...
}
Метод fail
вызывает report True
, что приводит к ошибке компилятора.Это в значительной степени правильное поведение.