[Haskell-cafe] Class/Instance : what am I doing wrong in this example ?

Tillmann Rendel rendel at rbg.informatik.tu-darmstadt.de
Thu Dec 20 11:26:37 EST 2007


david48 wrote:
> class Gadget g where
>   fInit  :: g -> a -> g
> 
> data FString = FString !Int !String deriving Show
> 
> instance Gadget FString where

at this point fInit has this type:

   FString -> a -> FString

>   fInit (FString n _) s = FString n (take n s)

but your implementation has this type

   FString -> String -> FString


These types are incompatible, your fInit implementation should be able 
to work with whatever type a the caller has choosen to provide. Maybe 
you should try one of

   class Gadget g where
     fInit  :: g -> String -> g

or

   class Gadget g a where
     fInit  :: g -> a -> g

instead.

     Tillmann


More information about the Haskell-Cafe mailing list