
A 'stupid' question (sort of an embarassing one): I want to do formated output by converting data types to strings and the bring them in a formated way together. I use ghci 6.4 and when I want to see this text then it is shown as a string (i.e. with "... " added around) and the formating characters in the text (e.g. \n) are quoted and not executed. (if I apply show to the text string, then the above is done twice!) This does occur if I use a defined function (something like 'toString' or 'text') and does not occur if I use show (but I have other reasons not to use show). Is there a cure to have output formated with ghci without using show to individually convert data types into strings? Here an example output: text s2 "last id used #2\n\n(#2,EntType {unEntType = \"Point\"})\n(#1,EntType {unEntType = \"Point \"})\n\n\n deleted\nRelX empty\n\nHCons (Region2start \"start of region\",RelX empty\n) ( HCons (Region2end \"end of region\",RelX empty\n) (HCons (Point2coord \"Coordinates of Poi nt\",\n(#2,\n[NV 0.0 100.0])\n(#1,\n[NV 0.0 0.0])\n\n) HNil))" Wrapping the text string into a data type and then apply show to this data type gives also the desired result. Is there an easier way? Help is highly appreciated module OutputTest where data X = X Int Int Float deriving (Show) x1 = X 3 4 4.5 text :: X -> String text (X a b c) = show a ++ show b ++ " \n" ++ show c -- example output -- >text x1 --"34 \n4.5" data T a = T a instance Show a => Show (T a) where show (T a) = "Tx " ++ show a tx1 = T x1 instance Show (T X) where show (T a) = text a -------- works: -- >tx1 --34 --4.5