[Haskell-cafe] Using ShowS or Difference Lists

Holger Siegel holgersiegel74 at yahoo.de
Sat Feb 6 08:14:37 EST 2010


Am Samstag, den 06.02.2010, 23:12 +1030 schrieb Mark Spezzano:
> Hi, 
> 
> Just wondering whether I can use ShowS or tupling or Difference Lists to speed up the following code?
> 
> It's basic text processing. It takes in a list of Lines where each Line
>  is a list of Words and intersperses " " between them then concatenates
>  them into a longer String. Note that there is a recursive call and the
>  ++ operator.
> 
> Thanks
> 
> Mark
> 
> 
> -- Function: joinLines
> -- Joins the Words within Lines together with whitespace and newline characters
> -- Argument: Lines to pad with whitespace and newlines
> -- Evaluate: The processed and concatenated String   
> joinLines :: [Line] -> String 
> joinLines (l:[]) = concat (intersperse " " l) 
> joinLines (l:ls) = (concat (intersperse " " l)) ++ ('\n':joinLines ls)

You should use the existing library functions and leave the
optimisations to their implementor:

import Data.List

joinLines :: [[String]] -> String
joinLines = intercalate "\n" . map (intercalate " ")

Now you can easily switch to the faster ByteString library by simply
changing the import statement.




More information about the Haskell-Cafe mailing list