Hello Alexander, Monday, January 21, 2008, 7:36:18 PM, you wrote:
> How does caller choose which particular instance of Num they want? > In object-oriented language If function return type is an interface > it means that it can return any implementation of this interface, > but caller can't choose which particular inplementation they want. but type class isn't an interface! it's just like interface in one concrete area - it includes method specifications, but not includes data fields the type that should ìó returned by function is passed by means of so-called dictionary and which type should be returned is defined by type inference process. for example main = print (length [] + f 1) here f should return Int because length return Int and you can't add values of different types (without explicit type conversion). you should also read something about two-way type inference but i don't know any good source please note that in modern OOP languages (latest C# versions, C++ 0x) support for *one-way* type inference was only added, i.e. they only can deduce type of expression from types of operands, while Haskell deduces types in both directions -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe