`show' in ghci dialogue
Serge D. Mechveliani
mechvel at botik.ru
Sat Jan 12 07:58:14 EST 2008
People,
I have a question about usage of `show' in the GHCi dialogue system.
I introduce my user class DShow, trying to improve the class Show of
Haskell-98. For example, I program
---------------------------
class DShow a where dShow :: ShowOptions -> a -> String
...
main = let listOfListPairs = [ ([1,2,3], [] ),
([4,5,6], [7] ),
([9,8,0], [0,0,0])
] :: [ ([Int], [Int]) ]
opts = ShowOptions {verbosity = 2,
listSepator = ", \n\n",
fieldSeparator = ", \n"}
in
putStr (dShow opts listOfListPairs)
---------------------------
Then, the command ./Main outputs
-----------------------
[([1, 2, 3], []),
([4, 5, 6], [7]),
([9, 8, 0], [0, 0, 0])]
-----------------------
This way of the output format control by dShow and ShowOptions is my goal.
But the command
> main
in the ghci interpreter outputs something like this:
"[([1, 2, 3), []),\n\n([4, 5, 6), [7]),\n\n([9, 8, 0],\n\n[0, 0, 0])]"
How can the user force ghci to output the same output format as in
the case of ./Main
(how to interprete '\n') ?
1. If we give to the interpreter the line
> listOfListPairs
, then the ghci dialogue system does interprete the NewLine
characters on output as needed --
only for the value of (show listOfListPairs).
And I need it for the value of (dShow opts listOfListPairs).
Is there any way to substitute a user function instead of `show' in the
ghci output? (and dShow has additional argument ...).
2. Which function outputs a string in the ghci dialogue system?
Can the user make this function to interprete the NewLine character
in the argument string?
Thank you in advance for your explanation.
-----------------
Serge Mechveliani
mechvel at botik.ru
More information about the Glasgow-haskell-users
mailing list