functions not in type classes

Sat, 19 Jan 2002 09:21:37 +0900

Cagdas Ozgenc wrote:

> You shouldn't be using multi paramater type classes in place of type
> constructors. Then you will have the ambiguity problems that you
> mention on you web site. Multi parameter type classes have the
> benefit of using multi dispatch based on two non related types.

Ozgenc's opinion is right. See the code below.
This is a proper Haskell 98 script,
tested under Hugs version December 2001.
No need for multi parameter stuff.

class Container a where
  celem :: Eq b => b -> a b -> Bool
  cmap :: (Eq b, Eq c) => (b->c) -> a b -> a c

data MyList a = MyList [a] deriving Show

instance Container MyList where
  celem x (MyList l) = elem x l
  cmap f (MyList l) = MyList (map f l)