[Haskell-cafe] what does "atomically#" mean?
Daryoush Mehrtash
dmehrtash at gmail.com
Fri Mar 20 16:07:30 EDT 2009
I am having hard time making sense of GHC.Conc. Is there a writeup that
describes the significance of "#", or the meaning of "primOp" and
"primType"?
Thanks
Daryoush
On Sun, Dec 7, 2008 at 11:48 PM, Don Stewart <dons at galois.com> wrote:
> dmehrtash:
> > Any idea was the atomically# mean in the following code?
> >
> > atomically :: STM a -> IO a
> > atomically (STM m) = IO (\s -> (atomically# m) s )
> >
> > Code is from GHC.Conc module
> > [1]
> http://www.haskell.org/ghc/docs/6.6/html/libraries/base/GHC-Conc.html
>
> It is a primitive hook into the runtime, where transactional memory is
> implemented.
>
> It is documented in the primops module in the GHC source,
>
> $ cd ghc/compiler/prelude/
>
> ------------------------------------------------------------------------
> section "STM-accessible Mutable Variables"
> ------------------------------------------------------------------------
>
> primtype TVar# s a
>
> primop AtomicallyOp "atomically#" GenPrimOp
> (State# RealWorld -> (# State# RealWorld, a #) )
> -> State# RealWorld -> (# State# RealWorld, a #)
> with
> out_of_line = True
> has_side_effects = True
>
> primop RetryOp "retry#" GenPrimOp
> State# RealWorld -> (# State# RealWorld, a #)
> with
> out_of_line = True
> has_side_effects = True
>
>
> Along with other primitives like:
>
> ------------------------------------------------------------------------
> section "Parallelism"
> ------------------------------------------------------------------------
>
> primop ParOp "par#" GenPrimOp
> a -> Int#
> with
> -- Note that Par is lazy to avoid that the sparked thing
> -- gets evaluted strictly, which it should *not* be
> has_side_effects = True
>
> -- Don
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.haskell.org/pipermail/haskell-cafe/attachments/20090320/883ecf9b/attachment.htm
More information about the Haskell-Cafe
mailing list