
12 Aug
2004
12 Aug
'04
9:52 a.m.
On 12/08/2004, at 11:05 PM, Simon Peyton-Jones wrote:
module M where
class C a where op :: a -> a
instance C Int where op x = x+1
f x = Just (op x)
Under your proposal, I'd infer f :: Int -> Maybe Int, on the grounds that C is closed and there is only one instance.
If I'm reading Keean's posts right, that's exactly his point: if you only have one instance of class C, then it's valid to improve f's type to :: Int -> Maybe Int, right? If, on the other hand, you had another instance (e.g. instance C Bool), then the signature of f would have to remain polymorphic. -- % Andre Pang : trust.in.love.to.save