[Haskell-cafe] do we need types?

Miguel Mitrofanov miguelimo38 at yandex.ru
Fri Feb 26 08:25:03 EST 2010


s/subclasses/classes/
Sorry for the confusion.

Miguel Mitrofanov wrote:
> I'd say we don't really need subclasses. I mean, what's the difference:
> 
> class Eq a where (==) :: a -> a -> Bool
> instance Eq a => Eq (Maybe a) where
>   Nothing == Nothing = True
>   Just x == Just y = x == y
>   _ == _ = False
> sort :: Eq a => [a] -> [a]
> 
> or
> 
> data Eq a = Eq {eq :: a -> a -> Bool}
> eqMaybe :: Eq a -> Eq (Maybe a)
> eqMaybe e = Eq {eq = eqM} where
>   eqM Nothing Nothing = True
>   eqM (Just x) (Just y) = eq e x y
>   eqM _ _ = False
> sort :: Eq a -> [a] -> [a]
> 
> Replacing classes with types, we only lose one thing: the compiler won't 
> deduce the right instances for us. I'll trade it for the ability to 
> abstract over them. After all, we CAN deduce the right
> instances by hand, it's just a finite amount of work (not very big, in 
> my experience).
> 
> Pasqualino "Titto" Assini wrote:
>> Hi, just a silly question (or maybe more than one):
>>
>>
>> In Haskell we have data types (Integer,[a],...) as well as type
>> classes (Num, Ord...).
>>
>> But, if we have type classes do we still need types?
>>
>>
>> Why shouldn't the objects that we process be defined only by their
>> 'interfaces' (assuming that a type class is a kind of interface)?
>>
>>
>> Maybe the real question is: are type classes a more primitive concept
>> than data types?
>>
>> And if so, in a language that had only type classes what would a data
>> declaration like the following map to:
>>
>> data List a = Cons a (List a) | Nil
>>
>> And what about pattern matching? Would that still be possible, and
>> what form would it take?
>>
>>
>> And finally, would having only type classes make the type system any 
>> simpler?
>>
>>
>> Thanks,
>>
>>                          titto
>> _______________________________________________
>> Haskell-Cafe mailing list
>> Haskell-Cafe at haskell.org
>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>
> 
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
> 


More information about the Haskell-Cafe mailing list