在GHCi中以某种方式可以做reify吗?
当我尝试使用'runQ'时,它抱怨“无法在IO monad中进行修改”。
>>> runQ (reify ''Bool)
Template Haskell error: Can't do `reify' in the IO monad
*** Exception: user error (Template Haskell failure)
我不是在寻找:t
或其他东西,只是为了快速检查reify
返回的内容而不将其写入文件并将该文件加载到GHCi中。
答案 0 :(得分:26)
您只需从拼接中运行它而不是使用runQ
:
> $(stringE . show =<< reify ''Bool)
"TyConI (DataD [] GHC.Types.Bool [] [NormalC GHC.Types.False [],NormalC GHC.Types.True []] [])"