concat

`concat :: [a] -> [a] -> ... -> [a]`

`concat (s1, s2, ... , sn) = concat (s1) (s2, s3, ... , sn)` is a variadic function that takes lists or strings and returns a single list or string containing of the elements or characters of the arguments in order from left to right. `concat` is curried with respect to the first argument.

This `concat` now works as expected for `strings`
What's the intended behaviour for String objects such as `new String('foo')`?