interface NHC.IOExtras where {

{-# NEED #-}
instance Ix.Ix Prelude.Integer;

{-# NEED #-}
instance Ix.Ix Prelude.Bool;

{-# NEED #-}
instance Ix.Ix Prelude.Int;

{-# NEED #-}
instance Ix.Ix Prelude.Char;

{-# NEED #-}
instance Ix.Ix Prelude.Ordering;

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b) => Ix.Ix (a,b);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c) => Ix.Ix (a,b,c);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d) => Ix.Ix (a,b,c,d);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e) => Ix.Ix (a,b,c,d,e);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f) => Ix.Ix (a,b,c,d,e,f);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g) => Ix.Ix (a,b,c,d,e,f,g);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h) => Ix.Ix (a,b,c,d,e,f,g,h);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h,Ix.Ix i) => Ix.Ix (a,b,c,d,e,f,g,h,i);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h,Ix.Ix i,Ix.Ix j) => Ix.Ix (a,b,c,d,e,f,g,h,i,j);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h,Ix.Ix i,Ix.Ix j,Ix.Ix k) => Ix.Ix (a,b,c,d,e,f,g,h,i,j,k);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h,Ix.Ix i,Ix.Ix j,Ix.Ix k,Ix.Ix l) => Ix.Ix (a,b,c,d,e,f,g,h,i,j,k,l);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h,Ix.Ix i,Ix.Ix j,Ix.Ix k,Ix.Ix l,Ix.Ix m) => Ix.Ix (a,b,c,d,e,f,g,h,i,j,k,l,m);

{-# NEED #-}
instance (Ix.Ix a,Ix.Ix b,Ix.Ix c,Ix.Ix d,Ix.Ix e,Ix.Ix f,Ix.Ix g,Ix.Ix h,Ix.Ix i,Ix.Ix j,Ix.Ix k,Ix.Ix l,Ix.Ix m,Ix.Ix n,Ix.Ix o) => Ix.Ix (a,b,c,d,e,f,g,h,i,j,k,l,m,n,o);

interface ! NHC.IOExtras
{-# NEED newIOArray #-}
newIOArray{-# 2 #-}::(Ix.Ix a) => ((a,a) -> (b -> (NHC.Internal.IO (IOArray a b))));

{-# NEED boundsIOArray #-}
boundsIOArray{-# 1 #-}::(Ix.Ix a) => ((IOArray a b) -> (a,a));

{-# NEED freezeIOArray #-}
freezeIOArray{-# 1 #-}::(Ix.Ix a) => ((IOArray a b) -> (NHC.Internal.IO (Array.Array a b)));
interface Array
{-# NEED Array #-}
data (Ix.Ix a) => Array a b;
interface ! NHC.IOExtras
{-# NEED writeIOArray #-}
writeIOArray{-# 3 #-}::(Ix.Ix a) => ((IOArray a b) -> (a -> (b -> (NHC.Internal.IO ()))));

{-# NEED readIOArray #-}
readIOArray{-# 2 #-}::(Ix.Ix a) => ((IOArray a b) -> (a -> (NHC.Internal.IO b)));

{-# NEED IOArray #-}
data (Ix.Ix a) => IOArray a b;

{-# NEED unsafePtrEq #-}
unsafePtrEq{-# 2 #-}::(a -> (a -> Prelude.Bool));

{-# NEED newIORef #-}
newIORef{-# 1 #-}::(a -> (NHC.Internal.IO (IORef a)));

{-# NEED writeIORef #-}
writeIORef{-# 2 #-}::((IORef a) -> (a -> (NHC.Internal.IO ())));

{-# NEED readIORef #-}
readIORef{-# 1 #-}::((IORef a) -> (NHC.Internal.IO a));

{-# NEED IORef #-}
newtype {-#  #-} IORef a;
interface ! NonStdTrace
{-# NEED trace #-}
trace{-# 2 #-}::(Prelude.String -> (a -> a));
interface ! NHC.IOExtras
{-# NEED fixIO #-}
fixIO{-# 1 #-}::((a -> (NHC.Internal.IO a)) -> (NHC.Internal.IO a));

{-# NEED performGC #-}
performGC{-# 0 #-}::(NHC.Internal.IO ());

{-# NEED excludeFinalisers #-}
excludeFinalisers{-# 1 #-}::((NHC.Internal.IO a) -> (NHC.Internal.IO a));

{-# NEED hGetBuf #-}
hGetBuf{-# 0 #-}::(IO.Handle -> ((NHC.FFI.Ptr a) -> (Prelude.Int -> (NHC.Internal.IO Prelude.Int))));

{-# NEED hPutBuf #-}
hPutBuf{-# 3 #-}::(IO.Handle -> ((NHC.FFI.Ptr a) -> (Prelude.Int -> (NHC.Internal.IO ()))));
interface NHC.FFI
{-# NEED Ptr #-}
data Ptr a;
interface IO
{-# NEED Handle #-}
newtype {-#  #-} Handle;
interface ! Ix
{-# NEED _tupleIndex #-}
_tupleIndex{-# 4 #-}::(Ix a) => (a -> (a -> (a -> (Prelude.Int -> Prelude.Int))));

{-# NEED _tupleRange #-}
_tupleRange{-# 3 #-}::(Ix a) => (a -> (a -> ([(a -> b)] -> [b])));

{-# NEED {Ix range index inRange} #-}
class (Prelude.Ord a) => Ix a where {
  range{-# 1 #-}::((a,a) -> [a]);
  index{-# 2 #-}::((a,a) -> (a -> Prelude.Int));
  inRange{-# 2 #-}::((a,a) -> (a -> Prelude.Bool));
  rangeSize{-# 1 #-}::((a,a) -> Prelude.Int);
};
interface NHC.Internal
{-# NEED IO #-}
newtype {-#  #-} IO;
interface ! NHC.Internal
{-# NEED unsafePerformIO #-}
unsafePerformIO{-# 1 #-}::((NHC.Internal.IO a) -> a);

{-# NEED unsafeInterleaveIO #-}
unsafeInterleaveIO{-# 1 #-}::((NHC.Internal.IO a) -> (NHC.Internal.IO a));
}
