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. _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe