Just a follow up to my last post ... The HList paper also presents a way of
removing overlapping instances from _any_ class. So infact support for
overlapping
instances is no longer required - and this removes all the messy
problems with
overlapping instances and functional dependancies.
The current HList source distribution runs in hugs with "-98 +o" only
because of
"lazyness" on out part. All the occurances of overlapping instances can
(will?) be
removed from the source if it becomes an important issue (most of them are
in auxilliary definitions that are not in the paper, like Show for HList.
If you program in the "completely non overlapping instances" model, then
compiler
support for deriving TTypeable would be nice, or compiler support for a type
level equality constraint (TypeEq could become a built-in). But just to
make it clear - compiler
support for this is not necessary, you just define instances of
TTypeable for all your datatypes.
There is a template-haskell library that can automatically derive
TTypeable for any datatype
as well.
Keean.
David Menendez wrote:
Keean Schupke writes:
Haskell already has static records (in H98)
Dynamic records are addressed by the HList library, which uses
extensions already present in GHC and Hugs (namely Multi-parameter
type-classes and function-dependancies).
Is this the case? Every implementation of HList that I've seen also uses
overlapping and undecidable instances.
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe