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

Reply via email to