José Miguel Vilaça wrote:
Hi

If I understand your problem than the following is a solution:

--------------------------------------------------

{-# OPTIONS -fglasgow-exts #-}

class Foo a b where
   g :: a -> b

type A = {- change the following -} Int
type B = {- change the following -} Char

instance Foo A B where
   g a = {- change the following -} ' '

type C = {- change the following -} Float
type D = {- change the following -} String

instance Foo C D where
   g c = {- change the following -} ""


f :: (Foo a b, Foo c d) => a -> c -> (b, d)
f x y = (g x, g y)

Thanks for the workaround. However this does not seem to be quite so general as intersection types, because it would only allow me to define f for some specific g ie the g of Foo, rather than for any general function...

Regards,
Brian Hulley
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to