[Haskell] Forcing Type Class Equality

Gerrit van den Geest g.vandengeest at students.uu.nl
Thu Jun 29 05:44:19 EDT 2006

Hi John,

> NB
> the essence what I am trying to do is to define a proxy class Foo for 
> class Ba1 I would have thought that something as simple as the 
> following would have worked ??
> class Ba1 a where
>   dosomething :: a -> IO ()
> ba1 :: Ba1 a => a -> IO ()
> ba1 x = dosomething x
> instance Ba1 Int where
>   dosomething x = print x
> instance Ba1 Char where
>   dosomething x = print x
> what I wish to do is declare another function

If you implement the proxy function like below, it should work:

class Ba1 a => Foo a where
  proxy :: a -> IO ()
  proxy = ba1

I've made Foo a subclass of Ba1 with a member function proxy and a 
default implementation. I hope this will help you further..


PS Use the haskell-cafe list next time for this kind of questions.

More information about the Haskell mailing list