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