Question aboutthe use of an inner forall

Scott J. jscott@planetinternet.be
Fri, 30 Aug 2002 11:27:58 +0200


Hi,

What happens if I code:

newVar (MutVar s Bool)

Do I get something of the form;

ST s' (MutVar s' (MutVar s Bool))

Thx

Scott
----- Original Message -----
From: "Simon Peyton-Jones" <simonpj@microsoft.com>
To: "Simon Peyton-Jones" <simonpj@microsoft.com>; "Ashley Yakeley"
<ashley@semantic.org>
Cc: "Haskell Cafe List" <haskell-cafe@haskell.org>
Sent: Thursday, August 29, 2002 4:10 PM
Subject: RE: Question aboutthe use of an inner forall


> Now fixed in the 5.04 branch.   The fix will get into the HEAD when
> I merge in the Template Haskell stuff.
>
> Thanks for the report
>
> Simon
>
>
> | -----Original Message-----
> | From: Simon Peyton-Jones [mailto:simonpj@microsoft.com]
> | Sent: 28 August 2002 12:21
> | To: Ashley Yakeley
> | Cc: Haskell Cafe List
> | Subject: RE: Question aboutthe use of an inner forall
> |
> |
> | No, this is a bug, thank you.  Will fix.
> |
> | Simon
> |
> | | -----Original Message-----
> | | From: Ashley Yakeley [mailto:ashley@semantic.org]
> | | Sent: 19 August 2002 11:31
> | | To: Jay Cox; Haskell Cafe List
> | | Subject: Re: Question aboutthe use of an inner forall
> | |
> | |
> | | At 2002-08-18 20:19, Jay Cox wrote:
> | |
> | | >#ST> runST (newSTRef (3::Prelude.Int))
> | | >#
> | | >#Ambiguous type variable(s) `a' in the constraint `PrelShow.Show a'
> | | >#arising from use of `PrelIO.print' at <No locn> #In a 'do'
> | | expression
> | | >pattern binding: PrelIO.print it
> | |
> | | I don't understand this either, actually:
> | |
> | |   $ ghci -fglasgow-exts -package lang
> | |      ___         ___ _
> | |     / _ \ /\  /\/ __(_)
> | |    / /_\// /_/ / /  | |      GHC Interactive, version 5.04,
> | | for Haskell
> | | 98.
> | |   / /_\\/ __  / /___| |      http://www.haskell.org/ghc/
> | |   \____/\/ /_/\____/|_|      Type :? for help.
> | |
> | |   Loading package base ... linking ... done.
> | |   Loading package haskell98 ... linking ... done.
> | |   Loading package lang ... linking ... done.
> | |   Prelude> :module ST
> | |   Prelude ST> :type runST
> | |
> | |   Inferred type is less polymorphic than expected
> | |       Quantified type variable `s' escapes
> | |       Expected type: ST s a -> t
> | |       Inferred type: (forall s1. ST s1 a) -> a
> | |   Prelude ST>
> | |
> | | What's up with that? Can't I even look at the type? Is this the
> | | monomorphism restriction or something?
> | |
> | | --
> | | Ashley Yakeley, Seattle WA
> | |
> | | _______________________________________________
> | | Haskell-Cafe mailing list
> | | Haskell-Cafe@haskell.org
> | | http://www.haskell.org/mailman/listinfo/haskell-cafe
> | |
> | _______________________________________________
> | Haskell-Cafe mailing list
> | Haskell-Cafe@haskell.org
> | http://www.haskell.org/mailman/listinfo/haskell-cafe
> |
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe@haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
>