
Am 11.08.2011 11:13, schrieb Yitzchak Gale:
Here is a simple example of how to use ShowS:
showPerson :: String -> Int -> Int -> String showPerson name age shoeSize = concat [ "Name: ", name, ", Age: ", show age, ", Shoe size: ", show shoeSize] ... putStrLn $ showPerson name age shoe
becomes, in the ShowS style:
showsPerson :: String -> Int -> Int -> ShowS showsPerson name age shoeSize = ("Name: " ++) . (name ++) . (", Age: " ++) . shows age . (", Shoe size: " ++) . shows shoeSize ... putStrLn $ showsPerson name age shoe ""
I think, this examples shows, why ShowS is rarely used! It would even be longer if you used "showString" instead of these (ugly) sections with ++ (instead of using ++ directly). I don't think, there's a performance issue, either. (++ is right-associative). Creating a (better formatted) list of strings and then using "concat", "unwords", "unlines" or "intercalate ", " is quite a good choice. Cheers Christian
Regards, Yitz