[Haskell-cafe] closed classes [was: Re: exceptions vs. Either]
Simon Peyton-Jones
simonpj at microsoft.com
Thu Aug 12 10:08:32 EDT 2004
but if f is exported, that's probably not what you want. And if you give a type sig to f,
f:: forall a. C a => a -> Maybe a
the type sig will say it's polymorphic, while the improvement rule will say that a must be Int.
Simon
| -----Original Message-----
| From: André Pang [mailto:ozone at algorithm.com.au]
| Sent: 12 August 2004 14:52
| To: Simon Peyton-Jones
| Cc: MR K P SCHUPKE; haskell-cafe at haskell.org; qrczak at knm.org.pl
| Subject: Re: [Haskell-cafe] closed classes [was: Re: exceptions vs. Either]
|
| 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
More information about the Haskell-Cafe
mailing list