Как работает Langage.Haskell.TH.report? - PullRequest
6 голосов
/ 07 марта 2012

К сожалению, многие функции Template Haskell не имеют абсолютно никакой документации.Одной из таких функций является report.Он принимает Bool и String и выдает ошибку компиляции с указанной строкой в ​​качестве сообщения об ошибке.Кто-нибудь знает, что, черт возьми, для Bool?Насколько я могу судить, любое значение делает одно и то же ...

Ответы [ 2 ]

9 голосов
/ 07 марта 2012

Если Bool равно True, сообщается об ошибке;если это False, выдается «предупреждение», означающее, что код шаблона будет продолжать выполняться для сбора дополнительных «предупреждений».

2 голосов
/ 07 марта 2012

Глядя на исходный код, report вызывает qReport, который является методом некоторого класса с именем Quasi. Этот метод на самом деле содержит чертову документацию - хотя только небольшой фрагмент. Я цитирую:

Сообщить об ошибке (True) или предупреждении (False) ... но продолжить; используйте fail, чтобы остановить

Итак, похоже, что мой TH-сплайс вылетает с соответствующим сообщением об ошибке, мне просто нужно вместо этого вызвать fail. Надеюсь, эта информация будет полезна всем, кто пытается это выяснить ...

...