lines package:numeric-prelude

lines breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines. Note that after splitting the string at newline characters, the last part of the string is considered a line even if it doesn't end with a newline. For example,
>>> lines ""
[]
>>> lines "\n"
[""]
>>> lines "one"
["one"]
>>> lines "one\n"
["one"]
>>> lines "one\n\n"
["one",""]
>>> lines "one\ntwo"
["one","two"]
>>> lines "one\ntwo\n"
["one","two"]
Thus lines s contains at least as many elements as newlines in s.
unlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each.
>>> unlines ["Hello", "World", "!"]
"Hello\nWorld\n!\n"