Make Data.Array.{IArray,MArray,IO,ST} work with Hugs, splitting off
the IOArray part of Hugs.IOExts into Hugs.IOArray and (sadly) adding
Hugs.Array.Base, a cut-down version of Data.Array.Base.
import Prelude
import Data.Ix
import Prelude
import Data.Ix
+#ifdef __HUGS__
+import Hugs.Array.Base
+#else
-- * @IO@ arrays with boxed elements
IOArray, -- instance of: Eq, Typeable
-- * @IO@ arrays with boxed elements
IOArray, -- instance of: Eq, Typeable
+#ifdef __GLASGOW_HASKELL__
-- * @IO@ arrays with unboxed elements
IOUArray, -- instance of: Eq, Typeable
castIOUArray, -- :: IOUArray i a -> IO (IOUArray i b)
-- * @IO@ arrays with unboxed elements
IOUArray, -- instance of: Eq, Typeable
castIOUArray, -- :: IOUArray i a -> IO (IOUArray i b)
-- * Overloaded mutable array interface
module Data.Array.MArray,
-- * Overloaded mutable array interface
module Data.Array.MArray,
+#ifdef __GLASGOW_HASKELL__
-- * Doing I\/O with @IOUArray@s
hGetArray, -- :: Handle -> IOUArray Int Word8 -> Int -> IO Int
hPutArray, -- :: Handle -> IOUArray Int Word8 -> Int -> IO ()
-- * Doing I\/O with @IOUArray@s
hGetArray, -- :: Handle -> IOUArray Int Word8 -> Int -> IO Int
hPutArray, -- :: Handle -> IOUArray Int Word8 -> Int -> IO ()
import Data.Word
import Data.Dynamic
import Data.Word
import Data.Dynamic
-import Foreign.C
-import Foreign.Ptr ( Ptr, FunPtr )
-import Foreign.StablePtr ( StablePtr )
+#ifdef __HUGS__
+import Hugs.IOArray
+#endif
#ifdef __GLASGOW_HASKELL__
-- GHC only to the end of file
#ifdef __GLASGOW_HASKELL__
-- GHC only to the end of file
+import Foreign.C
+import Foreign.Ptr ( Ptr, FunPtr )
+import Foreign.StablePtr ( StablePtr )
+
import Data.Array.Base
import GHC.Arr ( STArray, freezeSTArray, unsafeFreezeSTArray,
thawSTArray, unsafeThawSTArray )
import Data.Array.Base
import GHC.Arr ( STArray, freezeSTArray, unsafeFreezeSTArray,
thawSTArray, unsafeThawSTArray )
import Prelude
import Data.Ix
import Prelude
import Data.Ix
+#ifdef __HUGS__
+import Hugs.Array.Base
+#else
-- * Boxed arrays
STArray, -- instance of: Eq, MArray
-- * Boxed arrays
STArray, -- instance of: Eq, MArray
+#ifdef __GLASGOW_HASKELL__
-- * Unboxed arrays
STUArray, -- instance of: Eq, MArray
castSTUArray, -- :: STUArray s i a -> ST s (STUArray s i b)
-- * Unboxed arrays
STUArray, -- instance of: Eq, MArray
castSTUArray, -- :: STUArray s i a -> ST s (STUArray s i b)
-- * Overloaded mutable array interface
module Data.Array.MArray,
-- * Overloaded mutable array interface
module Data.Array.MArray,
import Prelude
import Data.Array.MArray
import Prelude
import Data.Array.MArray
+#ifdef __HUGS__
+import Hugs.ST
+#else
import Data.Array.Base hiding (MArray(..))
import Data.Array.Base hiding (MArray(..))
#ifdef __GLASGOW_HASKELL__
import GHC.Arr
#ifdef __GLASGOW_HASKELL__
import GHC.Arr
#ifdef __HUGS__
import Hugs.IO
#ifdef __HUGS__
import Hugs.IO
import Hugs.IOExts
#endif
import Hugs.IOExts
#endif