[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..

Grt

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



More information about the Haskell mailing list