2013-05-22 12 views
17

GHCiでreifyをどうしようもできますか?テンプレートハスケル:GHCiで確認

私が 'runQ'を使って試してみると、 "IOモナドで正解できません"という文句を言います。

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

私はすぐにGHCiのにファイルをファイルとロードにそれを記述することなく何reifyリターンをチェックする方法のため、:tか何かを探していませんよ。

答えて

20

あなただけの代わりにrunQを使用してのスプライスからそれを実行する必要があります。

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

あなたは 'putStrLn $使用することができます(stringEをPPRINT = <<「」ブールを具体化。)'プリティ印刷出力を取得します。 –

+1

実際に文字列に変換するのではなく、変数に値を実際に抽出することはできますか? – Hjulle