Koen Cleassen wrote: > Indeed. And this is a perfect example of the fact that all > this bottom-dictionary passing does not work. The type of > the list still matters though: > > Hugs> show ([] :: [Char]) > "\"\"" > > Hugs> show ([] :: [Int]) > "[]"
Koen is absolutely right. A fundamental property of type-classes is that you can *not* assign a meaning to the program independent of its types. A haskell program is not always typeable when I erase all type signatures because some programs are inherently ambigious, like showing the empty list. As Koen shows, by giving a type signature I can disambiguate the program and it indeed gives quite different results with different type signatures. A good discussion about this property of type-classes can be found in: A Second Look at Overloading, Martin Odersky, Philip Wadler, and Martin Wehr. In Proceedings, ACM Conference on Functional Programming and Computer Architecture, La Jolla, CA, June 1995. All the best, Daan. _______________________________________________ Haskell mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/haskell