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)