
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_Haske... -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com