2013-05-22 7 views
17

Ist es irgendwie möglich, reify in GHCi zu tun?Vorlage Haskell: in GHCi vergiften

Wenn ich es mit 'RunQ' versuche, beschwert es sich "kann nicht in der IO-Monad verifizieren".

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

Ich bin nicht auf der Suche nach :t oder etwas, nur für einen Weg, um schnell zu überprüfen, was reify kehrt ohne es in eine Datei und Laden zu schreiben, die in GHCi Datei.

Antwort

20

Sie müssen es nur von einem Spleiß laufen, anstatt runQ der Verwendung:

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

Sie können 'putStrLn $ (. Stringe pprint = << verdinglichen '' Bool)' zu bekommen recht-gedruckte Ausgabe. –

+1

Ist es möglich, den Wert tatsächlich in eine Variable zu extrahieren, anstatt sie nur in eine Zeichenfolge umzuwandeln? – Hjulle

Verwandte Themen