On Wed, Sep 22, 1999 at 00:36:27 +0200, Hannah Schroeter wrote:
> On Tue, Sep 14, 1999 at 12:43:11AM -0700, Simon Peyton-Jones wrote:
> > > {-# notInline test #-}
> > > test :: IORef [a]
> > > test = unsafePerformIO $ newIORef []
>
> > > main = do
> > > writeIORef test [42]
> > > bang <- readIORef test
> > > print (bang :: [Char])
>
> Hmmm. The type of test should be IORef (forall a.[a]).
> So you should be able to put into it only values of type
> forall a.[a], nothing more or less specific.
GHC doesn't accept the type `IORef (forall a.[a])':
ghc-test.hs:6: Unexpected forall type: forall a. [a]
Compilation had errors
I also tried `IORef [forall a.a]', which gives:
ghc-test.hs:6: parse error on input `forall'
Compilation had errors
and `IORef [(forall a.a)]', which gives:
ghc-test.hs:6: Unexpected forall type: forall a. a
Compilation had errors
At least, the latter two cases should IMHO be treated equal, so this seems
to be a bug in the parser.
Finally, I tried `forall a.IORef [a]' (as only change), but this is just a
more verbose writing of `IORef [a]' according to Haskell Report#4.1.2 and
GHC-users-guide#5.6. Naturally, the program compiles and dumps core as
before.
Cheers,
Michael
--
The First Commandment for Technicians:
Beware the lightening that lurketh in the undischarged capacitor,
lest it cause thee to bounce upon thy buttocks in a most untechnician-like
manner. -- fortune cookie