[Haskell-cafe] Overloading

Richard A. O'Keefe ok at cs.otago.ac.nz
Mon Mar 11 23:52:53 CET 2013


On 12/03/2013, at 10:00 AM, MigMit wrote:

> 
> On Mar 12, 2013, at 12:44 AM, "Richard A. O'Keefe" <ok at cs.otago.ac.nz> wrote:
>> 
>> Prelude> :type (+)
>> (+) :: Num a => a -> a -> a
>> 
>> The predefined (+) in Haskell requires its arguments and its result
>> to be precisely the same type.
>> 
>> I think you had better justify the claim that Date+Period -> Date and
>> Date+Period -> Period are possible at the same time by showing us
>> actual code.
> 
> Ehm...
> 
> import Prelude hiding (Num)
> class SumDP a where (+) :: Date -> Period -> a
> instance SumDP Date where date + period = <your_implementation_here>
> instance SumDP Period where date + period = <and_here>

Notice the difference?
I said that THE PREDEFINED (+) in Haskell requires its arguments
and its result to be precisely the same type.

This example is not the predefined (+); it's another variable
entirely that happens to have the same short name and cannot
also add integers.





More information about the Haskell-Cafe mailing list