Подтвердить что ты не робот

Шаблон Haskell: reify в GHCi

Как можно сделать reify в GHCi?

Когда я пытаюсь использовать "runQ", он жалуется, что "не может сделать reify в монаде IO".

>>> runQ (reify ''Bool)
Template Haskell error: Can't do `reify' in the IO monad
*** Exception: user error (Template Haskell failure)

Я не ищу :t или что-то еще, только для того, чтобы быстро проверить, что возвращает reify, не записывая его в файл и не загружая этот файл в GHCi.

4b9b3361

Ответ 1

Вам просто нужно запустить его из сплайсинга вместо использования runQ:

> $(stringE . show =<< reify ''Bool)
"TyConI (DataD [] GHC.Types.Bool [] [NormalC GHC.Types.False [],NormalC GHC.Types.True []] [])"