-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Mutable variables and tuples -- -- This package defines the classes Var and MTuple of -- variables and tuples mutable within appropriate monads, as well as -- some instances of these classes. @package var @version 0.2.0.0 module Data.Var.Class class Monad m => Var var a m where newVar = lift . newVar readVar = lift . readVar writeVar var = lift . writeVar var modifyVar var f = readVar var >>= writeVar var . f modifyVar' var f = readVar var >>= \ a -> writeVar var $! f a newVar :: Var var a m => a -> m (var a) readVar :: Var var a m => var a -> m a writeVar :: Var var a m => var a -> a -> m () modifyVar :: Var var a m => var a -> (a -> a) -> m () modifyVar' :: Var var a m => var a -> (a -> a) -> m () instance Var TVar a STM instance Var (STVar s) a (ST s) instance Var (STVar s) a (ST s) instance Var IOVar a IO module Data.Var.Storable data StorableVar a withStorableVar :: StorableVar a -> (Ptr a -> IO b) -> IO b touchStorableVar :: StorableVar a -> IO () instance Typeable1 StorableVar instance Show (StorableVar a) instance Eq (StorableVar a) instance Ord (StorableVar a) instance Storable a => Var StorableVar a IO instance Typeable a => Data (StorableVar a) module Data.Var module Data.Tuple.ITuple data List a Nil :: List a (:|) :: a -> List a -> List a class ITuple t where type family ListRep t :: List * type instance ListRep t = ListRepDefault t toTuple = toTupleDefault fromTuple = fromTupleDefault toTuple :: ITuple t => t -> Tuple (ListRep t) fromTuple :: ITuple t => Tuple (ListRep t) -> t type ListRepDefault t = GCons (Rep t) Nil toTupleDefault :: (Generic t, GITuple (Rep t)) => t -> Tuple (ListRepDefault t) fromTupleDefault :: (Generic t, GITuple (Rep t)) => Tuple (ListRepDefault t) -> t data Tuple xs U :: Tuple Nil (:*) :: x -> Tuple xs -> Tuple (x :| xs) type Field1 a = Find N0 (ToList a) type Field2 a = Find N1 (ToList a) type Field3 a = Find N2 (ToList a) type Field4 a = Find N3 (ToList a) type Field5 a = Find N4 (ToList a) type Field6 a = Find N5 (ToList a) type Field7 a = Find N6 (ToList a) type Field8 a = Find N7 (ToList a) type Field9 a = Find N8 (ToList a) instance ITuple (a, b, c, d, e, f, g) instance ITuple (a, b, c, d, e, f) instance ITuple (a, b, c, d, e) instance ITuple (a, b, c, d) instance ITuple (a, b, c) instance ITuple (a, b) instance ITuple () instance (GITuple a, GITuple b) => GITuple (a :*: b) instance GITuple f => GITuple (M1 i c f) instance GITuple (K1 i c) instance GITuple U1 instance ITuple (Identity a) instance ITuple (Tuple xs) module Data.Tuple.ITuple.Lens _1 :: (Functor f, ITuple s, ListRep s ~ (a :| as), ITuple t, ListRep t ~ (b :| as)) => (a -> f b) -> s -> f t _2 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a :| as)), ITuple t, ListRep t ~ (a1 :| (b :| as))) => (a -> f b) -> s -> f t _3 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a :| as))), ITuple t, ListRep t ~ (a1 :| (a2 :| (b :| as)))) => (a -> f b) -> s -> f t _4 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a3 :| (a :| as)))), ITuple t, ListRep t ~ (a1 :| (a2 :| (a3 :| (b :| as))))) => (a -> f b) -> s -> f t _5 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a3 :| (a4 :| (a :| as))))), ITuple t, ListRep t ~ (a1 :| (a2 :| (a3 :| (a4 :| (b :| as)))))) => (a -> f b) -> s -> f t _6 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a :| as)))))), ITuple t, ListRep t ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (b :| as))))))) => (a -> f b) -> s -> f t _7 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a6 :| (a :| as))))))), ITuple t, ListRep t ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a6 :| (b :| as)))))))) => (a -> f b) -> s -> f t _8 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a6 :| (a7 :| (a :| as)))))))), ITuple t, ListRep t ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a6 :| (a7 :| (b :| as))))))))) => (a -> f b) -> s -> f t _9 :: (Functor f, ITuple s, ListRep s ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a6 :| (a7 :| (a8 :| (a :| as))))))))), ITuple t, ListRep t ~ (a1 :| (a2 :| (a3 :| (a4 :| (a5 :| (a6 :| (a7 :| (a8 :| (b :| as)))))))))) => (a -> f b) -> s -> f t tuple :: (Functor f, ITuple s, ITuple t) => (Tuple (ListRep s) -> f (Tuple (ListRep t))) -> s -> f t _head :: Functor f => (x -> f y) -> Tuple (x :| xs) -> f (Tuple (y :| xs)) _tail :: Functor f => (Tuple xs -> f (Tuple ys)) -> Tuple (x :| xs) -> f (Tuple (x :| ys)) module Data.Tuple.MTuple class (Monad m, ITuple t) => MTuple var t m where thawTuple = lift . thawTuple freezeTuple = lift . freezeTuple thawTuple :: MTuple var t m => t -> m (var t) freezeTuple :: MTuple var t m => var t -> m t class MTuple var t m => MField1 var t m where read1 = lift . read1 write1 var = lift . write1 var modify1 var f = write1 var . f =<< read1 var modify1' var f = read1 var >>= \ a -> write1 var $! f a read1 :: MField1 var t m => var t -> m (Field1 t) write1 :: MField1 var t m => var t -> Field1 t -> m () modify1 :: MField1 var t m => var t -> (Field1 t -> Field1 t) -> m () modify1' :: MField1 var t m => var t -> (Field1 t -> Field1 t) -> m () class MField1 var t m => MField2 var t m where read2 = lift . read2 write2 var = lift . write2 var modify2 var f = write2 var . f =<< read2 var modify2' var f = read2 var >>= \ a -> write2 var $! f a read2 :: MField2 var t m => var t -> m (Field2 t) write2 :: MField2 var t m => var t -> Field2 t -> m () modify2 :: MField2 var t m => var t -> (Field2 t -> Field2 t) -> m () modify2' :: MField2 var t m => var t -> (Field2 t -> Field2 t) -> m () class MField2 var t m => MField3 var t m where read3 = lift . read3 write3 var = lift . write3 var modify3 var f = write3 var . f =<< read3 var modify3' var f = read3 var >>= \ a -> write3 var $! f a read3 :: MField3 var t m => var t -> m (Field3 t) write3 :: MField3 var t m => var t -> Field3 t -> m () modify3 :: MField3 var t m => var t -> (Field3 t -> Field3 t) -> m () modify3' :: MField3 var t m => var t -> (Field3 t -> Field3 t) -> m () class MField3 var t m => MField4 var t m where read4 = lift . read4 write4 var = lift . write4 var modify4 var f = write4 var . f =<< read4 var modify4' var f = read4 var >>= \ a -> write4 var $! f a read4 :: MField4 var t m => var t -> m (Field4 t) write4 :: MField4 var t m => var t -> Field4 t -> m () modify4 :: MField4 var t m => var t -> (Field4 t -> Field4 t) -> m () modify4' :: MField4 var t m => var t -> (Field4 t -> Field4 t) -> m () class MField4 var t m => MField5 var t m where read5 = lift . read5 write5 var = lift . write5 var modify5 var f = write5 var . f =<< read5 var modify5' var f = read5 var >>= \ a -> write5 var $! f a read5 :: MField5 var t m => var t -> m (Field5 t) write5 :: MField5 var t m => var t -> Field5 t -> m () modify5 :: MField5 var t m => var t -> (Field5 t -> Field5 t) -> m () modify5' :: MField5 var t m => var t -> (Field5 t -> Field5 t) -> m () class MField5 var t m => MField6 var t m where read6 = lift . read6 write6 var = lift . write6 var modify6 var f = write6 var . f =<< read6 var modify6' var f = read6 var >>= \ a -> write6 var $! f a read6 :: MField6 var t m => var t -> m (Field6 t) write6 :: MField6 var t m => var t -> Field6 t -> m () modify6 :: MField6 var t m => var t -> (Field6 t -> Field6 t) -> m () modify6' :: MField6 var t m => var t -> (Field6 t -> Field6 t) -> m () class MField6 var t m => MField7 var t m where read7 = lift . read7 write7 var = lift . write7 var modify7 var f = write7 var . f =<< read7 var modify7' var f = read7 var >>= \ a -> write7 var $! f a read7 :: MField7 var t m => var t -> m (Field7 t) write7 :: MField7 var t m => var t -> Field7 t -> m () modify7 :: MField7 var t m => var t -> (Field7 t -> Field7 t) -> m () modify7' :: MField7 var t m => var t -> (Field7 t -> Field7 t) -> m () class MField7 var t m => MField8 var t m where read8 = lift . read8 write8 var = lift . write8 var modify8 var f = write8 var . f =<< read8 var modify8' var f = read8 var >>= \ a -> write8 var $! f a read8 :: MField8 var t m => var t -> m (Field8 t) write8 :: MField8 var t m => var t -> Field8 t -> m () modify8 :: MField8 var t m => var t -> (Field8 t -> Field8 t) -> m () modify8' :: MField8 var t m => var t -> (Field8 t -> Field8 t) -> m () class MField8 var t m => MField9 var t m where read9 = lift . read9 write9 var = lift . write9 var modify9 var f = write9 var . f =<< read9 var modify9' var f = read9 var >>= \ a -> write9 var $! f a read9 :: MField9 var t m => var t -> m (Field9 t) write9 :: MField9 var t m => var t -> Field9 t -> m () modify9 :: MField9 var t m => var t -> (Field9 t -> Field9 t) -> m () modify9' :: MField9 var t m => var t -> (Field9 t -> Field9 t) -> m () module Data.Tuple.Storable data StorableTuple a class StorableList xs withStorableTuple :: StorableTuple a -> (forall e. Ptr e -> IO b) -> IO b touchStorableTuple :: StorableTuple a -> IO () instance Typeable1 StorableTuple instance Show (StorableTuple a) instance Eq (StorableTuple a) instance Ord (StorableTuple a) instance (Storable x, StorableList xs) => StorableList ((':|) * x xs) instance StorableList ('Nil *) instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t), Storable (Field4 t), Storable (Field5 t), Storable (Field6 t), Storable (Field7 t), Storable (Field8 t), Storable (Field9 t)) => MField9 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t), Storable (Field4 t), Storable (Field5 t), Storable (Field6 t), Storable (Field7 t), Storable (Field8 t)) => MField8 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t), Storable (Field4 t), Storable (Field5 t), Storable (Field6 t), Storable (Field7 t)) => MField7 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t), Storable (Field4 t), Storable (Field5 t), Storable (Field6 t)) => MField6 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t), Storable (Field4 t), Storable (Field5 t)) => MField5 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t), Storable (Field4 t)) => MField4 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t), Storable (Field3 t)) => MField3 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t), Storable (Field2 t)) => MField2 StorableTuple t IO instance (ITuple t, StorableList (ListRep t), Storable (Field1 t)) => MField1 StorableTuple t IO instance (ITuple t, StorableList (ListRep t)) => MTuple StorableTuple t IO instance Typeable a => Data (StorableTuple a) module Data.ByteArraySlice.Unsafe data MutableByteArray s class Monad m => MonadPrim m where type family World m prim :: MonadPrim m => (State# (World m) -> (# State# (World m), a #)) -> m a data Prim s a runPrim :: MonadPrim m => Prim (World m) a -> m a class ByteArraySlice a where plusByteSize = plusByteSizeDefault readByteOff = readByteOffDefault writeByteOff = writeByteOffDefault plusByteSize :: ByteArraySlice a => Int -> t a -> Int readByteOff :: ByteArraySlice a => MutableByteArray s -> Int -> Prim s a writeByteOff :: ByteArraySlice a => MutableByteArray s -> Int -> a -> Prim s () plusByteSizeDefault :: (Generic a, GByteArraySlice (Rep a)) => Int -> t a -> Int readByteOffDefault :: (Generic a, GByteArraySlice (Rep a)) => MutableByteArray s -> Int -> Prim s a writeByteOffDefault :: (Generic a, GByteArraySlice (Rep a)) => MutableByteArray s -> Int -> a -> Prim s () byteSizeOf :: ByteArraySlice a => a -> Int instance (ByteArraySlice x, ByteArraySlice (Tuple xs)) => ByteArraySlice (Tuple ((':|) * x xs)) instance ByteArraySlice (Tuple ('Nil *)) instance ByteArraySlice (Ptr a) instance ByteArraySlice (FunPtr a) instance ByteArraySlice (StablePtr a) instance ByteArraySlice Word64 instance ByteArraySlice Word32 instance ByteArraySlice Word16 instance ByteArraySlice Word8 instance ByteArraySlice Int64 instance ByteArraySlice Int32 instance ByteArraySlice Int16 instance ByteArraySlice Int8 instance ByteArraySlice Double instance ByteArraySlice Float instance ByteArraySlice Word instance ByteArraySlice Int instance ByteArraySlice Char instance ByteArraySlice Bool instance (ByteArraySlice a, ByteArraySlice b, ByteArraySlice c, ByteArraySlice d, ByteArraySlice e, ByteArraySlice f, ByteArraySlice g) => ByteArraySlice (a, b, c, d, e, f, g) instance (ByteArraySlice a, ByteArraySlice b, ByteArraySlice c, ByteArraySlice d, ByteArraySlice e, ByteArraySlice f) => ByteArraySlice (a, b, c, d, e, f) instance (ByteArraySlice a, ByteArraySlice b, ByteArraySlice c, ByteArraySlice d, ByteArraySlice e) => ByteArraySlice (a, b, c, d, e) instance (ByteArraySlice a, ByteArraySlice b, ByteArraySlice c, ByteArraySlice d) => ByteArraySlice (a, b, c, d) instance (ByteArraySlice a, ByteArraySlice b, ByteArraySlice c) => ByteArraySlice (a, b, c) instance (ByteArraySlice a, ByteArraySlice b) => ByteArraySlice (a, b) instance ByteArraySlice () instance (GByteArraySlice a, GByteArraySlice b) => GByteArraySlice (a :*: b) instance GByteArraySlice f => GByteArraySlice (M1 i c f) instance ByteArraySlice c => GByteArraySlice (K1 i c) instance GByteArraySlice U1 module Data.ByteArraySlice class ByteArraySlice a where plusByteSize = plusByteSizeDefault readByteOff = readByteOffDefault writeByteOff = writeByteOffDefault module Data.Tuple.IO data IOTuple a class ArraySlice a data IOUTuple a instance Typeable1 IOTuple instance Typeable1 IOUTuple instance Eq (IOTuple a) instance Eq (IOUTuple a) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t), ByteArraySlice (Field8 t), ByteArraySlice (Field9 t)) => MField9 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t), ByteArraySlice (Field8 t)) => MField8 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t)) => MField7 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t)) => MField6 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t)) => MField5 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t)) => MField4 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t)) => MField3 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t)) => MField2 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t)) => MField1 IOUTuple t IO instance (ITuple t, ByteArraySlice (Tuple (ListRep t))) => MTuple IOUTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField9 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField8 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField7 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField6 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField5 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField4 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField3 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField2 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField1 IOTuple t IO instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MTuple IOTuple t IO module Data.Tuple.ST data STTuple s a class ArraySlice a data STUTuple s a instance Typeable2 STTuple instance Typeable2 STUTuple instance Eq (STTuple s a) instance Eq (STUTuple s a) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t), ByteArraySlice (Field8 t), ByteArraySlice (Field9 t)) => MField9 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t), ByteArraySlice (Field8 t)) => MField8 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t)) => MField7 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t)) => MField6 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t)) => MField5 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t)) => MField4 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t)) => MField3 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t)) => MField2 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t)) => MField1 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t))) => MTuple (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t), ByteArraySlice (Field8 t), ByteArraySlice (Field9 t)) => MField9 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t), ByteArraySlice (Field8 t)) => MField8 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t), ByteArraySlice (Field7 t)) => MField7 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t), ByteArraySlice (Field6 t)) => MField6 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t), ByteArraySlice (Field5 t)) => MField5 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t), ByteArraySlice (Field4 t)) => MField4 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t), ByteArraySlice (Field3 t)) => MField3 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t), ByteArraySlice (Field2 t)) => MField2 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t)), ByteArraySlice (Field1 t)) => MField1 (STUTuple s) t (ST s) instance (ITuple t, ByteArraySlice (Tuple (ListRep t))) => MTuple (STUTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField9 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField8 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField7 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField6 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField5 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField4 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField3 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField2 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField1 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MTuple (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField9 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField8 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField7 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField6 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField5 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField4 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField3 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField2 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MField1 (STTuple s) t (ST s) instance (ITuple t, ArraySlice (Tuple (ListRep t))) => MTuple (STTuple s) t (ST s) module Data.Var.IO -- | A mutable variable in the IO monad type IOVar = IORef -- | A mutable variable containing an unboxed value of type a in -- the IO monad data IOUVar a instance Typeable1 IOUVar instance Eq (IOUVar a) instance ByteArraySlice a => Var IOUVar a IO module Data.Var.ST -- | a value of type STVar s a is a mutable variable in -- state thread s, containing a value of type a type STVar = STRef -- | a value of type STUVar s a is a mutable variable in -- state thread s, containing an unboxed value of type -- a data STUVar s a instance Typeable2 STUVar instance Eq (STUVar s a) instance ByteArraySlice a => Var (STUVar s) a (ST s) instance ByteArraySlice a => Var (STUVar s) a (ST s)