Hello Vyacheslav, Wednesday, December 27, 2006, 5:29:37 PM, you wrote:
> If I enable incoherent instances GHC always picks the general case > which seems like the wrong thing to do. What I want it to do is delay > comitting to an instance until it's processing a specific invocation > of a polymorphic function. All the information is available at compile > time but I found no way to do this. are you seen http://haskell.org/haskellwiki/OOP_vs_type_classes ? it contains example where compiler choose general instance just because function calling polymorhic code don't get full dictionary of type. smth like this: class F a where f :: a -> Int instance (Num a) => F a ... instance F Int ... g :: (Num a) => a -> a g x = f x main = print (g (1::Int)) -- Best regards, Bulat mailto:[EMAIL PROTECTED] _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe