On 05/12/2007, at 13:55, Simon Marlow wrote:

Pepe Iborra wrote:
Tue Dec  4 02:55:11 PST 2007  Pepe Iborra <[EMAIL PROTECTED]>
 * Teach :print to follow references (STRefs and IORefs)
   Prelude Data.IORef> :p l
 l = (_t4::Maybe Integer) : (_t5::[Maybe Integer])
 Prelude Data.IORef> p <- newIORef l
 Prelude Data.IORef> :p p
 p = GHC.IOBase.IORef (GHC.STRef.STRef {((_t6::Maybe Integer) :
                                         (_t7::[Maybe Integer]))})
 Prelude Data.IORef> :sp p
 p = GHC.IOBase.IORef (GHC.STRef.STRef {(_ : _)})
     I used braces to denote the contents of a reference.
 Perhaps there is a more appropriate notation?

Why not just

 GHC.Prim.MutVar# <value>

that seems to be the most obvious, if perhaps not the tidyest, way to present it. Do we really need a special syntax and to hide the real primitive object here?

Sure. I agree that it is a bad idea and introduction of a new notation should be justified only if it significantly improves the end result. Something more like

 p = {(_t6::Maybe Integer) : (_t7::[Maybe Integer])})

would be what I originally had in mind, as opposed to

p = GHC.IOBase.IORef (GHC.STRef.STRef (GHC.Prim.MutVar# (_t6::Maybe Integer) : (_t7 ::[Maybe Integer]))

which is rather longish. But on the other hand, it is more consistent with the behaviour of :print in other areas.
I'll prepare a patch if there is no further discussion.

_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to