Bryan O'Sullivan wrote:
On Fri, Oct 9, 2009 at 8:33 AM, Jeremy Shaw <jer...@n-heptane.com
<mailto:jer...@n-heptane.com>> wrote:
What are the chances of seeing a, instance Data Text, some day?
I might as well follow up here, since I've sent Jeremy a couple of
messages on this subject.
I think maybe someone else will have to take a crack at a Data
instance for Text, because the documentation for Data.Data is not
written in English. In its syntax and structure, it closely hews to
what we think of as English, but it is the kind of documentation that
can only be understood by someone who already knows what it is going
to say.
This is an exemplar of my experience with the cottage industry of
generic programming in Haskell: I'd really quite like to use the
stuff, but for goodness's sake, o beloved researchers, please aim your
expository papers at non-specialists once in a while. An endless chain
of papers of the form "my technique, which you won't understand, is
better than this other technique, which you haven't read about and
won't anyway understand, in subtle ways that you won't understand"
does not feel to me like progress.
Data is probably the most complex bit of Haskell I've seen, and pretty
much needs a full paper to have an idea of what's going on, so I'm not
sure it's a typical piece of Haskell (nor even a typical bit of generic
programming) to pick on.
I had a crack at a simple proper Data instance, and got as far as
needing a Data instance for ByteString#, accompanied by an error I don't
fully understand, but I think is telling me that things involving magic
hashes are magic:
Data/Text/Array.hs:104:35:
Couldn't match kind `#' against `*'
When matching the kinds of `ByteArray# :: #' and `d :: *'
Expected type: d
Inferred type: ByteArray#
In the first argument of `z', namely `Array'
What is the Data instance required for here, exactly? Is it generic
transformations, or for generic serialisation (or some other need)? It
may be possible to fake the Data instance to cover the needed aspects.
I'm not in favour of the boxing/unboxing that Jeremy suggested, because
Text doesn't really contain a String, but I'm also not sure that a real
Data instance (exposing all the innards) is that great either.
By the way: text-0.5 doesn't build for me on my GHC 6.8.2 system with
base-3, mainly because you are assuming the class-based exception
mechanism from base-4 in the Data.Text.Encoding.Error module, without
using the extensible-exceptions package. I'm happy to knock up some
patches that fixes it, if you still want to support that configuration?
Thanks,
Neil.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe