base-compat-0.12.3: A compatibility layer for base
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.String.Compat

Synopsis

Documentation

type String = [Char] Source #

A String is a list of characters. String constants in Haskell are values of type String.

See Data.List for operations on lists.

lines :: String -> [String] Source #

Splits the argument into a list of lines stripped of their terminating n characters. The n terminator is optional in a final non-empty line of the argument string.

For example:

>>> lines ""           -- empty input contains no lines
[]
>>> lines "\n"         -- single empty line
[""]
>>> lines "one"        -- single unterminated line
["one"]
>>> lines "one\n"      -- single non-empty line
["one"]
>>> lines "one\n\n"    -- second line is empty
["one",""]
>>> lines "one\ntwo"   -- second line is unterminated
["one","two"]
>>> lines "one\ntwo\n" -- two non-empty lines
["one","two"]

When the argument string is empty, or ends in a n character, it can be recovered by passing the result of lines to the unlines function. Otherwise, unlines appends the missing terminating n. This makes unlines . lines idempotent:

(unlines . lines) . (unlines . lines) = (unlines . lines)

words :: String -> [String] Source #

words breaks a string up into a list of words, which were delimited by white space.

>>> words "Lorem ipsum\ndolor"
["Lorem","ipsum","dolor"]

unlines :: [String] -> String Source #

Appends a n character to each input string, then concatenates the results. Equivalent to foldMap (s -> s ++ "n").

>>> unlines ["Hello", "World", "!"]
"Hello\nWorld\n!\n"

Note

unlines . lines /= id when the input is not n-terminated:

>>> unlines . lines $ "foo\nbar"
"foo\nbar\n"

unwords :: [String] -> String Source #

unwords is an inverse operation to words. It joins words with separating spaces.

>>> unwords ["Lorem", "ipsum", "dolor"]
"Lorem ipsum dolor"