words -package:text-zipper package:incipit-base

words takes Text and splits it into the list by words. Actual type of this function is the following:
words :: Text -> [Text]
but it was given a more complex type to provide friendlier compile time errors.
>>> words ""
[]

>>> words "one line"
["one","line"]

>>> words "   >_<   "
[">_<"]

>>> words ("string words" :: String)
...
... 'words' works with 'Text', not 'String'.
Possible fixes:
1. Make sure OverloadedStrings extension is enabled.
2. Apply 'toText' to a single value.
3. Apply 'map toText' to the list value.
...

>>> words True
...
... 'words' works with 'Text'
But given: 'Bool'
...
unwords takes list of Text values and joins them with space character. Actual type of this function is the following:
unwords :: [Text] -> Text
but it was given a more complex type to provide friendlier compile time errors.
>>> unwords []
""

>>> unwords ["singleWord"]
"singleWord"

>>> unwords ["word", "another"]
"word another"

>>> unwords (["word", "another"] :: [String])
...
... 'unwords' works with 'Text', not 'String'.
Possible fixes:
1. Make sure OverloadedStrings extension is enabled.
2. Apply 'toText' to a single value.
3. Apply 'map toText' to the list value.
...

>>> unwords [True, False]
...
... 'unwords' works with 'Text'
But given: 'Bool'
...