úÎ!6ä4‚!      None-.7=?@AFHSVX)'  mutable-lens+Representation of a mutable reference as a !.$When the lens functor type-param is (,) r2, then the output transition function is of type  s rW. To use it as a monadic action e.g. to run it, you'll need to first convert it using .ÌAgain, in principle this ought not to be necessary, but the Haskell runtime forces us to do this due to historical design decisions to hide necessary details that seemed appropriate to hide at the time. mutable-lens Convert an  p! to and from some monadic action m.This is similar to " and # from the  primitives package except our extra pE type-param helps us avoid accidentally mixing incompatible primops. mutable-lensBA lifted primitive state-transformer that interoperates with lens.+Specifically, this is a bare (unwrapped in StateT6) state transition on a lifted ("normal") state type.(To obtain one of these, you may apply a  p s a6 to a bare state transition, i.e. a function of type  (a -> (r, a)). mutable-lensLifted $¥. This is needed to interoperate lifted ("normal") types and unlifted types (such as primitives), but it also gives us the chance to restrict composition based on V which sadly isn't done in the unlifted internal representation (though it could be). mutable-lensžGHC implements different primitive operations, some of which cannot be mixed together and some of which can only be run in certain contexts. In particular, %/-related primops cannot be run directly in the &Q monad. However, this restriction is not represented at the bottom layer of the &; runtime which we need to wrap around and expose to users.¼This data structure is our ad-hoc attempt to group together "compatible" primops so that only lens representing compatible references can be composed together, avoiding deadly segfaults.See Nhttps://gitlab.haskell.org/ghc/ghc/blob/master/compiler/prelude/primops.txt.pp See also Ehttps://github.com/haskell/primitive/issues/43#issuecomment-613771394  mutable-lens7Run a bare state transition on a lens in the monad for p.The lens may be an  pM or any compositions of it with other optics, including prisms and so forth.  mutable-lens6A bare state transition representing a read operation.  mutable-lens7A bare state transition representing a write operation.  b can be passed to   to write b to the reference. mutable-lens<A bare state transition representing a modify/map operation. f can be passed to   to apply f to the reference.    None .=?@AFSX3° mutable-lensView a ' a as a  ' ( a.%Note: when this is eventually run in &\, the action will block the thread until there is a value present, as per the semantics of )%. It will then put a value into the 'a, which will block the thread if the value is absent. GHC doesn't give atomicity guarantees for 'Á so it's possible this does happen, e.g. if another producer managed to "get in there" during the intervening period between the two operations. Unfortunately GHC does not provide an atomic  modifyMVar function or primop.2If you don't want to deal with this, don't use an ', use a *.None3ö   +       !"#$%&'()'(*+,-./0+12.34+,5+,6789:+mutable-lens-0.1.0.0-8rJskjwjr3eCMsrUsevjXMControl.Lens.Mutable.TypesControl.Lens.Mutable.InternalControl.Lens.MutableSLensMonadLSTstToMmToSTLSTS PrimOpGroupOpSTOpMVarOpSTMrunSLens stateRead stateWrite stateModify$fMonadLSTOpSTMRealWorldSTM$fMonadLSTOpMVarRealWorldIO$fMonadLSTOpSTsm$fReadPrimOpGroup$fShowPrimOpGroup$fGenericPrimOpGroup$fEqPrimOpGroup$fOrdPrimOpGroup$fEnumPrimOpGroup$fBoundedPrimOpGroupAsLensasLens$fAsLensOpSTMRealWorldTMVar$fAsLensOpSTMRealWorldTVar$fAsLensOpMVarRealWorldMVar$fAsLensOpSTRealWorldIORef$fAsLensOpSTsSTRef$fAsLensOpSTsMutVar"lens-4.19.2-HTIbpbMvdqMDXVV2NxWaNZControl.Lens.TypeLens''primitive-0.7.0.1-4OYEE8uw8FE1Ko7THF1ebControl.Monad.Primitive PrimMonadPrimBaseghc-primGHC.PrimState#base GHC.Conc.SyncSTM GHC.TypesIOGHC.MVarMVar RealWorld takeMVar# stm-2.5.0.0Control.Concurrent.STM.TMVarTMVar