
Kevin Jardine
Almost every modern programming language has one or at most two standard representations for strings.
That includes PHP, Python, Ruby, Perl and many others. The lack of a standard text representation in Haskell has created a crazy patchwork of incompatible libraries requiring explicit and often inefficient conversions to connect them together.
Haskell does have a standard representation for strings, namely [Char]. Unfortunately, this sacrifices efficiency for elegance, which gives rise to the plethora of libraries.
I end up with a program littered with ugly pack, unpack, toString, fromString and similar calls.
Some of this can be avoided using a language extension that let you overload string constants. There are always trade offs, and no one solution will fit all: UTF-8 is space efficient while UTF-16 is time efficient (at least for certain classes of problems and data). It does seem that it should be possible to unify the various libraries wrapping bytestrings (CompactString, ByteString.UTF8 etc), however. -k -- If I haven't seen further, it is by standing in the footprints of giants