class Foo a b | a -> b instance Foo Int String bar :: Foo Int b => b bar = "rargh" Is there any reason why that shouldn't work? GHC gives one of its silly "b is a rigid variable" errors (aside: that's a really confusing error; I'd prefer something like Hugs's "Infered type is not general enough"). -- -David House, dmhouse at gmail.com