2013-05-22 7 views
17

में सुधार करें क्या यह किसी भी तरह से जीएचसीआई में reify करना संभव है?टेम्पलेट हास्केल: जीएचसीआई

जब मैं 'रनक्यू' का उपयोग करके इसे आज़माता हूं तो शिकायत करता है कि "आईओ मोनड में सुधार नहीं किया जा सकता"।

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

मैं :t या कुछ और के लिए नहीं देख रहा हूँ, केवल एक तरह से जल्दी क्या reify रिटर्न की जांच करने के लिए एक फ़ाइल और लोड हो रहा है कि GHCi में फाइल करने के लिए इसे लिखने के बिना के लिए।

उत्तर

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

संबंधित मुद्दे