module Pugs.Compat ( module X ) where
import Pugs.Compat.Cast as X
import Pugs.Compat.Global as X
import Pugs.Compat.ID as X
import Pugs.Compat.Monads as X
import Pugs.Compat.String as X
import Pugs.Compat.Posix as X
import Pugs.Compat.Regex as X
import Control.Concurrent as X
import Control.Concurrent.STM as X
import Control.Exception as X (catchJust, errorCalls, Exception(..))
import Control.Monad as X (replicateM, forM, forM_, MonadPlus(..), msum, liftM2, liftM3, guard, foldM, unless, liftM, filterM, join, when)
import Control.Monad.Error as X (MonadError(..), ErrorT(..), Error(..))
import Control.Monad.Fix as X (fix)
import Control.Monad.Identity as X (Identity(..))
import Control.Monad.Reader as X (MonadReader(..), ReaderT(..), asks)
import Control.Monad.State as X (MonadState(..), gets, modify)
import Control.Monad.Trans as X (MonadIO(..), MonadTrans(..))
import Control.Monad.Writer as X (MonadWriter(..), WriterT(..), censor)
import Data.Array as X (elems)
import Data.Bits as X hiding (shift)
import Data.ByteString as X (ByteString)
import Data.Char as X
import Data.Complex as X
import Data.Dynamic as X hiding (cast)
import Data.Either as X
import Data.Generics as X (Data)
import Data.IORef as X
import Data.IntMap as X (IntMap)
import Data.List as X ( (\\), find, genericLength, insert, sortBy, intersperse, partition, group, sort, genericReplicate, isPrefixOf, isSuffixOf, genericTake, genericDrop, unfoldr, nub, nubBy, transpose, delete, foldl')
import Data.Map as X (Map)
import Data.Maybe as X
import Data.Monoid as X
import Data.Ratio as X
import Data.Sequence as X (Seq, singleton)
import Data.Set as X (Set)
import Data.Time as X
import Data.Time.Clock.POSIX as X
import Data.Tree as X
import Data.Unique as X
import Data.Word as X hiding (Word)
import Debug.Trace as X
import GHC.Conc as X (unsafeIOToSTM)
import GHC.Exts as X (unsafeCoerce#, Word(W#), Word#)
import GHC.PArr as X
import Network as X
import Numeric as X (showHex)
import System.Cmd as X
import System.Directory as X (Permissions(..), getPermissions, getTemporaryDirectory, createDirectory, removeDirectory, removeFile, getDirectoryContents, getModificationTime)
import System.Environment as X (getArgs, withArgs, getProgName)
import System.Exit as X
import System.IO as X ( Handle, stdin, stdout, hClose, hGetLine, hGetChar, hGetContents, openFile, hSetBinaryMode, hPutStr, hPutStrLn, IOMode(..), stderr, SeekMode(..), hSetBuffering, BufferMode(..), hIsTerminalDevice, hFlush, hPrint, isEOF, hSeek, hTell, hIsOpen, hIsClosed, hIsReadable, hIsWritable, hIsSeekable)
import System.IO.Error as X (ioeGetErrorString, isUserError)
import System.IO.Unsafe as X
import System.Mem as X
import System.Mem.Weak as X
import System.Process as X
import System.Random as X hiding (split)
import Text.Regex.Base as X hiding (empty)
import Text.Regex.PCRE as X hiding (empty)
instance Show Unique where
show = show . hashUnique
instance (Typeable a, Typeable b) => Show (a -> b) where
show _ = "(" ++ typA ++ " -> " ++ typB ++ ")"
where
typA = show $ typeOf (undefined :: a)
typB = show $ typeOf (undefined :: b)
instance (Typeable a, Typeable b) => Eq (a -> b) where
x == y = show x == show y
instance (Typeable a, Typeable b) => Ord (a -> b) where
compare x y = compare (show x) (show y)
instance Eq Dynamic where
x == y = show x == show y
instance Ord Dynamic where
compare x y = compare (show x) (show y)
instance Typeable1 [::] where
typeOf1 _ = mkTyConApp (mkTyCon "[::]") []