Type classes vs C++ overloading Re: [Haskell-cafe] Messing around with types [newbie]

Dan Weston westondan at imageworks.com
Thu Jun 21 11:39:35 EDT 2007


Bulat Ziganshin wrote:
> Hello Cristiano,
> 
> Thursday, June 21, 2007, 4:46:27 PM, you wrote:
> 
>> class FooOp a b where
>>   foo :: a -> b -> IO ()
>>  
>> instance FooOp Int Double where
>>   foo x y = putStrLn $ (show x) ++ " Double " ++ (show y)
> 
> this is rather typical question :)  unlike C++ which resolves any
> overloading at COMPILE TIME, selecting among CURRENTLY available
> overloaded definitions and complaining only when when this overloading
> is ambiguous, type classes are the RUN-TIME overloading mechanism

As I understood it, it was at COMPILE TIME (i.e. no type witness) 
whenever explicitly type-annotated, implicitly when not exported from a 
module, or when inlined at the call site, at least in GHC. Or did I get 
this wrong?

Dan



More information about the Haskell-Cafe mailing list