With the naive representation of a string as a list of characters [Char], it is. The only way to get to the end of the list is to recursively take the tail of the string (see the source at
http://hackage.haskell.org/package/base-4.6.0.1/docs/src/GHC...).
There's alternative representations with different trade offs, such as Data.Text