The question can be generalized via type classes: Is there any common set of primitives encapsulated into a single type class that has instances for Strings (Data.List) ByteStrings, Data.Text, Lazy bytestrings, Arrays, vectors and wathever container that can store an boxed, unboxed, packed unpacked sequence of wathever including chars? All of them have folds, heads, tails and a lot of common functions with the same name, but since there is not a single type class, the library programmer can not abstract his code when it is possible, so the library user can chose the particular instance for his particular problem.
2010/3/23 Johann Höchtl
<johann.hoechtl@gmail.com>
On 22.03.2010 14:15, Ivan Miljenovic wrote:
On 23 March 2010 00:10, Johan Tibell<johan.tibell@gmail.com> wrote:
A sequence of bytes is not the same thing as a sequence of Unicode
code points. If you want to replace String by something more efficient
have a look at Data.Text.
Though Data.Text still has the disadvantage of not being as nice to
deal with as String, since you can't pattern match on it, etc.
Whilst it may degrade performance, treating String as a list of
characters rather than an array provides you with greater flexibility
of how to deal with it.
But doesn't this basically mean sacrifice performance / applicability for algorithmic beauty? Sure, pattern match comes in handy, but in the case of strings at a high price