Hi again
Next approach:
> module Cafe where
>
> class CRankable a where
> rank :: a b -> b -> Maybe Integer -- Nothing means b is out of range or badly constructed
> unrank :: a b -> Integer -> Maybe b -- Nothing means rank is out of range
> count :: a b -> Maybe Integer -- Nothing means infinity
This works ok:
> data CPrime a = Prime deriving (Show) > > instance CRankable CPrime where > rank Prime x = Nothing > unrank Prime r = Nothing > count Prime = Nothing
But once i start returning anything but Nothing like:
> data CPrime' a = Prime' deriving (Show) > > instance CRankable CPrime' where > rank Prime' x = Just x > unrank Prime' r = Just r > count Prime' = Nothing
i get:
ERROR "./Cafe.lhs":26 - Inferred type is not general enough
*** Expression : rank
*** Expected type : CRankable CPrime' => CPrime' a -> a -> Maybe Integer
*** Inferred type : CRankable CPrime' => CPrime' Integer -> Integer -> Maybe Integer
so where exactly do i say a is an Integer?
/Bo _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe