
Sean Leather wrote:
There's the obvious approach that's described in every tutorial, book, and research paper (for didactic purposes, of course).
ex1 = "(" ++ show n ++ " " ++ s ++ ")"
It's pretty concise, but it's horribly inefficient due to the use of (++).
Then, there's the ShowS approach.
ex2 = showChar '(' . shows n . showChar ' ' . showString s . showChar ')' $ ""
This is more efficient, but now the code has bloated up a lot.
Why can't I have my cake and eat it, too? I want to write with as little code as |ex1| (or less if possible), and I want it to be as efficient as |ex2|.
I propose this example as an improvement.
ex3 = '(' .+. n .+. ' ' .+. s .$. ')'
Why not use the dlist library: http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dlist With something like (untested code):
xs +++ ys = shows xs `append` shows ys x .++ ys = showChar x `cons` shows ys xs ++. y = shows xs `snoc` showChar y
ext3' = toList $ '(' .++ n +++ ' ' .++ s ++. ')'
-- Live well, ~wren