On Fri, Jan 24, 2014, at 07:38 AM, JP Moresmau wrote:Hello cafe, I'm continuing my adventures with the GHC API. I'm following the code given at http://www.haskell.org/haskellwiki/GHC/As_a_library#Running_interactive_statements to run statements like in GHCi, but the behavior sometimes puzzles me.If I load a simple module:module Test whereimport qualified Data.Text as TAnd then run the statement T.pack \"test\", I expect to see "test" back. But I get Data.Text.Internal.Text _ 0 4. If I run "show $ T.Pack \"test\"" I get the expected result. Text _ 0 4 seems to be the output of the showText debugging function in Data.Text, that I don't see used in the Show instance. And looking at the GHC code (Debugger.hs) it does perform a show of the expression given. Why doesn't it work? What subtlety am I missing?
The example you linked to calls showTerm (http://www.haskell.org/ghc/docs/latest/html/libraries/ghc/src/Debugger.html#showTerm) which seems to have two different paths depending on the Opt_PrintEvldWithShow dynflag. One path appears to use show, and the other does not.
-Karl