module Data.Mutable (
Mutable(..)
, modifyRef, modifyRef'
, updateRef, updateRef'
, RefFor(..)
, DefaultMutable
, GRef
, MutVar
, CoerceRef(..)
, TraverseRef(..)
, GMutableRef(..)
, HListRef(..)
, VarMut(..)
, CoerceMut(..)
, TraverseMut(..)
, Immutable(..)
, MutPart(..)
, withPart
, freezePart, copyPart
, movePartInto, movePartOver, movePartWithin
, clonePart, unsafeFreezePart
, modifyPart, modifyPart'
, updatePart, updatePart'
, FieldMut(..), withField, mutField, Label(..)
, PosMut(..), withPos, mutPos
, TupleMut(..), withTuple
, hkdMutParts, HKDMutParts
, mutFst, mutSnd
, mutRec
, coerceRef, withCoerceRef
, MutBranch(..)
, thawBranch
, freezeBranch
, moveBranch
, copyBranch
, cloneBranch
, hasBranch, hasn'tBranch
, unsafeThawBranch
, unsafeFreezeBranch
, withBranch, withBranch_
, modifyBranch, modifyBranch'
, updateBranch, updateBranch'
, constrMB, CLabel(..), GMutBranchConstructor, MapRef
, nilMB, consMB
, nothingMB, justMB
, leftMB, rightMB
, PrimMonad, PrimState
) where
import Control.Monad.Primitive
import Data.Mutable.Branches
import Data.Mutable.Class
import Data.Mutable.Instances
import Data.Mutable.Parts
import Data.Primitive.MutVar