{-# LANGUAGE DeriveDataTypeable, FlexibleInstances, MultiParamTypeClasses,
 CPP #-}#if __GLASGOW_HASKELL__ >= 708{-# LANGUAGE RoleAnnotations #-}#endif{-# OPTIONS_HADDOCK hide #-}------------------------------------------------------------------------------- |-- Module : Data.Array.IO.Internal-- Copyright : (c) The University of Glasgow 2001-2012-- License : BSD-style (see the file libraries/base/LICENSE)---- Maintainer : libraries@haskell.org-- Stability : experimental-- Portability : non-portable (uses Data.Array.Base)---- Mutable boxed and unboxed arrays in the IO monad.-------------------------------------------------------------------------------moduleData.Array.IO.Internals(IOArray(..),-- instance of: Eq, TypeableIOUArray (..),-- instance of: Eq, TypeablecastIOUArray ,-- :: IOUArray ix a -> IO (IOUArray ix b)unsafeThawIOUArray ,)whereimportData.IntimportData.WordimportData.TypeableimportControl.Monad.ST(RealWorld,stToIO)importForeign.Ptr(Ptr,FunPtr)importForeign.StablePtr(StablePtr)#if __GLASGOW_HASKELL__ < 711importData.Ix#endifimportData.Array.Base importGHC.IOArray(IOArray(..))------------------------------------------------------------------------------- Flat unboxed mutable arrays (IO monad)-- | Mutable, unboxed, strict arrays in the 'IO' monad. The type-- arguments are as follows:---- * @i@: the index type of the array (should be an instance of 'Ix')---- * @e@: the element type of the array. Only certain element types-- are supported: see "Data.Array.MArray" for a list of instances.--newtypeIOUArray i e =IOUArray (STUArray RealWorldi e )derivingTypeable#if __GLASGOW_HASKELL__ >= 708-- Both parameters have class-based invariants. See also #9220.typeroleIOUArraynominalnominal#endifinstanceEq(IOUArray i e )whereIOUArray s1 == IOUArray s2 =s1 ==s2 instanceMArray IOUArray BoolIOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray CharIOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray IntIOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray WordIOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray (Ptra )IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray (FunPtra )IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray FloatIOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray DoubleIOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray (StablePtra )IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int8IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int16IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int32IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Int64IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word8IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word16IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word32IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )instanceMArray IOUArray Word64IOwhere{-# INLINE getBounds #-}getBounds (IOUArray arr )=stToIO$getBounds arr {-# INLINE getNumElements #-}getNumElements (IOUArray arr )=stToIO$getNumElements arr {-# INLINE newArray #-}newArray lu initialValue =stToIO$domarr <-newArray lu initialValue ;return(IOUArray marr ){-# INLINE unsafeNewArray_ #-}unsafeNewArray_ lu =stToIO$domarr <-unsafeNewArray_ lu ;return(IOUArray marr ){-# INLINE newArray_ #-}newArray_ =unsafeNewArray_ {-# INLINE unsafeRead #-}unsafeRead (IOUArray marr )i =stToIO(unsafeRead marr i ){-# INLINE unsafeWrite #-}unsafeWrite (IOUArray marr )i e =stToIO(unsafeWrite marr i e )-- | Casts an 'IOUArray' with one element type into one with a-- different element type. All the elements of the resulting array-- are undefined (unless you know what you\'re doing...).castIOUArray::IOUArray ix a ->IO(IOUArray ix b )castIOUArray (IOUArray marr )=stToIO$domarr' <-castSTUArray marr return(IOUArray marr' ){-# INLINE unsafeThawIOUArray #-}#if __GLASGOW_HASKELL__ >= 711unsafeThawIOUArray::UArrayixe->IO(IOUArrayixe)#elseunsafeThawIOUArray::Ixix =>UArray ix e ->IO(IOUArray ix e )#endifunsafeThawIOUArray arr =stToIO$domarr <-unsafeThawSTUArray arr return(IOUArray marr ){-# RULES
"unsafeThaw/IOUArray" unsafeThaw = unsafeThawIOUArray
 #-}#if __GLASGOW_HASKELL__ >= 711thawIOUArray::UArrayixe->IO(IOUArrayixe)#elsethawIOUArray::Ixix =>UArray ix e ->IO(IOUArray ix e )#endifthawIOUArray arr =stToIO$domarr <-thawSTUArray arr return(IOUArray marr ){-# RULES
"thaw/IOUArray" thaw = thawIOUArray
 #-}{-# INLINE unsafeFreezeIOUArray #-}#if __GLASGOW_HASKELL__ >= 711unsafeFreezeIOUArray::IOUArrayixe->IO(UArrayixe)#elseunsafeFreezeIOUArray::Ixix =>IOUArray ix e ->IO(UArray ix e )#endifunsafeFreezeIOUArray (IOUArray marr )=stToIO(unsafeFreezeSTUArray marr ){-# RULES
"unsafeFreeze/IOUArray" unsafeFreeze = unsafeFreezeIOUArray
 #-}#if __GLASGOW_HASKELL__ >= 711freezeIOUArray::IOUArrayixe->IO(UArrayixe)#elsefreezeIOUArray::Ixix =>IOUArray ix e ->IO(UArray ix e )#endiffreezeIOUArray (IOUArray marr )=stToIO(freezeSTUArray marr ){-# RULES
"freeze/IOUArray" freeze = freezeIOUArray
 #-}

AltStyle によって変換されたページ (->オリジナル) /