
On Wed, Jul 05, 2006 at 12:25:53PM +0100, Duncan Coutts wrote:
different types of input? I'd rather avoid having 3 versions, that are exactly the same except for imports.
People sometimes talk about doing a type class to cover string like modules.
Yes, that makes sense to me. I was sorta hoping to avoid having to say something like: instance StringLike B.ByteString where vlength = B.length vcons = B.cons ... with about 50 of these lines ...
What functions are you thinking of btw? We may want to include them in the ByteString modules anyway (possibly directly rather than in terms of other functions, to take advantage of tricks with the representation).
Most everything here: http://quux.org/devel/missingh/html/MissingH-Str.html The appropriate bits from: http://quux.org/devel/missingh/html/MissingH-List.html And perhaps even: http://quux.org/devel/missingh/html/MissingH-Str-CSV.html Also, it would be nice to see direct regexp support in ByteString. It seems ugly to have to convert to a String just to pass it back to C. But even if you did implement all of that, I think there is still utility in having a generic typeclass that can take any of the three string-like types that we have in Haskell these days. Otherwise, you are going to see library fracturization -- some code works with Strings, some with ByteStrings, some with lazy ByteStrings, and woe to the programmer that has to integrate all this mess. (OCaml has this problem in a big way with its lists vs. Streams and built-in handicapped IO vs. Posix IO) -- John