Pablo Nogueira wrote:
This has certainly been taken into account when comparing approaches to
generic programming. I quote from page 18/19 from the work you and Bulat
Indeed I was not aware of it. Missed that. Thanks for pointing it out!
Thus, full reflexivity of an approach is taken into account. This suggests
constrained types are part of Haskell98. So, I'm a bit confused at the
moment as well.
After reading the Haskell 98 report more carefully I think constrained
types are part of Haskell98. The syntax for algebraic datatype
declarations given is:
> data cx => T u1 ... uk = K1 t11 ... t1k1 | ...| Kn tn1 ... tnkn
Certainly, they are implemented in a peculiar way, with constraints
associated with value constructors and not the type, perhaps to keep
the class and kinds orthogonal (eg, the BinTree type has * -> * kind
instead of Ord -> * kind).
You are completely right, constraints are optional for data and newtype
declarations in Haskell98:
http://www.haskell.org/onlinereport/syntax-iso.html#sect9.5
In addition, GHC supports liberalised type synonyms which allows you to
define constraints:
http://www.haskell.org/ghc/docs/latest/html/users_guide/data-type-extensions.html#type-synonyms
Seems like the mystery is solved now..
At any rate, this has been discussed before in other threads.
Thanks Thomas for your help
P.
You're welcome,
Thomas
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe