Search code examples
listhaskellconcatenation

Is there any haskell function to concatenate list with separator?


Is there a function to concatenate elements of a list with a separator? For example:

> foobar " " ["is","there","such","a","function","?"]
["is there such a function ?"]

Thanks for any reply!


Solution

  • Yes, there is:

    Prelude> import Data.List
    Prelude Data.List> intercalate " " ["is","there","such","a","function","?"]
    "is there such a function ?"
    

    intersperse is a bit more general:

    Prelude> import Data.List
    Prelude Data.List> concat (intersperse " " ["is","there","such","a","function","?"])
    "is there such a function ?"
    

    Also, for the specific case where you want to join with a space character, there is unwords:

    Prelude> unwords ["is","there","such","a","function","?"]
    "is there such a function ?"
    

    unlines works similarly, only that the strings are imploded using the newline character and that a newline character is also added to the end. (This makes it useful for serializing text files, which must per POSIX standard end with a trailing newline)