Hello Brian, Friday, September 1, 2006, 8:32:55 PM, you wrote:
> I read the easy parts of the "Associated Types with Class" and > "Associated Type Synonyms" papers. An associated type synonym seems > to kind of work similarly to a restricted form of class. In what way > are the two following examples different? > -- define a class with a type synonym, and a set of operations > class A a where > type B b > foo :: a -> B b > instance A Int where > type B = Bool > foo = (==0) > -- define two classes, and an function that . > class A a, B b where > foo :: a -> b > instance A Int, B Bool where > foo = (==0) where you've find such unusual syntax? :) GHC/Hugs supports multi-parameter type classes (MPTC): class AB a b where foo :: a -> b instance AB Int Bool where foo = (==0) AT replaces MPTC with FD (functional dependency), which allows to specify which type parameter of MPTC is detremined by another one, i.e.: class AB a b | a->b where .... for further details about MPTC+FD see chapter 7.1.1 in the http://cvs.haskell.org/Hugs/pages/hugsman/exts.html > Also, has anybody written a paper on the differences between > typeclasses + associated types and ML's module system + overloading? "ML Modules and Haskell Type Classes: A Constructive Comparison" http://www.informatik.uni-freiburg.de/~wehr/diplom/Wehr_ML_modules_and_Haskell_type_classes.pdf -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe