-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | GHC primitives -- -- GHC primitives. @package ghc-prim -- | GHC magic. Use GHC.Exts from the base package instead of importing -- this module directly. module GHC.Magic -- | The call '(inline f)' reduces to f, but inline has a -- BuiltInRule that tries to inline f (if it has an unfolding) -- unconditionally The NOINLINE pragma arranges that inline only -- gets inlined (and hence eliminated) late in compilation, after the -- rule has had a good chance to fire. inline :: a -> a module GHC.Generics data Unit Unit :: Unit data (:+:) a b Inl :: a -> :+: a b Inr :: b -> :+: a b data (:*:) a b (:*:) :: a -> b -> :*: a b -- | GHC type definitions. Use GHC.Exts from the base package instead of -- importing this module directly. module GHC.Types -- | The character type Char is an enumeration whose values -- represent Unicode (or equivalently ISO/IEC 10646) characters (see -- http://www.unicode.org/ for details). This set extends the ISO -- 8859-1 (Latin-1) character set (the first 256 charachers), which is -- itself an extension of the ASCII character set (the first 128 -- characters). A character literal in Haskell has type Char. -- -- To convert a Char to or from the corresponding Int value -- defined by Unicode, use Prelude.toEnum and -- Prelude.fromEnum from the Prelude.Enum class -- respectively (or equivalently ord and chr). data Char C# :: Char# -> Char -- | A fixed-precision integer type with at least the range [-2^29 .. -- 2^29-1]. The exact range for a given implementation can be -- determined by using Prelude.minBound and -- Prelude.maxBound from the Prelude.Bounded class. data Int I# :: Int# -> Int -- | Single-precision floating point numbers. It is desirable that this -- type be at least equal in range and precision to the IEEE -- single-precision type. data Float F# :: Float# -> Float -- | Double-precision floating point numbers. It is desirable that this -- type be at least equal in range and precision to the IEEE -- double-precision type. data Double D# :: Double# -> Double -- | A value of type IO a is a computation which, when -- performed, does some I/O before returning a value of type a. -- -- There is really only one way to "perform" an I/O action: bind it to -- Main.main in your program. When your program is run, the I/O -- will be performed. It isn't possible to perform I/O from an arbitrary -- function, unless that function is itself in the IO monad and -- called at some point, directly or indirectly, from Main.main. -- -- IO is a monad, so IO actions can be combined using -- either the do-notation or the >> and >>= -- operations from the Monad class. newtype IO a IO :: (State# RealWorld -> (# State# RealWorld, a #)) -> IO a module GHC.Unit -- | The unit datatype () has one non-undefined member, the -- nullary constructor (). data () () :: () module GHC.Debug debugLn :: [Char] -> IO () debugErrLn :: [Char] -> IO () module GHC.Ordering data Ordering LT :: Ordering EQ :: Ordering GT :: Ordering -- | The tuple data types module GHC.Tuple data (,) a b (,) :: a -> b -> (,) a b data (,,) a b c (,,) :: a -> b -> c -> (,,) a b c data (,,,) a b c d (,,,) :: a -> b -> c -> d -> (,,,) a b c d data (,,,,) a b c d e (,,,,) :: a -> b -> c -> d -> e -> (,,,,) a b c d e data (,,,,,) a b c d e f (,,,,,) :: a -> b -> c -> d -> e -> f -> (,,,,,) a b c d e f data (,,,,,,) a b c d e f g (,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> (,,,,,,) a b c d e f g data (,,,,,,,) a b c d e f g h (,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> (,,,,,,,) a b c d e f g h data (,,,,,,,,) a b c d e f g h i (,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> (,,,,,,,,) a b c d e f g h i data (,,,,,,,,,) a b c d e f g h i j (,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> (,,,,,,,,,) a b c d e f g h i j data (,,,,,,,,,,) a b c d e f g h i j k (,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> (,,,,,,,,,,) a b c d e f g h i j k data (,,,,,,,,,,,) a b c d e f g h i j k l (,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> (,,,,,,,,,,,) a b c d e f g h i j k l data (,,,,,,,,,,,,) a b c d e f g h i j k l m (,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> (,,,,,,,,,,,,) a b c d e f g h i j k l m data (,,,,,,,,,,,,,) a b c d e f g h i j k l m n (,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> (,,,,,,,,,,,,,) a b c d e f g h i j k l m n data (,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o (,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> (,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o data (,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p (,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> (,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p data (,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q (,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> (,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q data (,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r (,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> (,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r data (,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s (,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> (,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s data (,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t (,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> (,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t data (,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u (,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> (,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u data (,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v (,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> (,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v data (,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w (,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> (,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w data (,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x (,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> (,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x data (,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y (,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> (,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y data (,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z (,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> (,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z data (,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ (,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> e__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> e__ -> f__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> e__ -> f__ -> g__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> e__ -> f__ -> g__ -> h__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ i__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> e__ -> f__ -> g__ -> h__ -> i__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ i__ data (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ i__ j__ (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) :: a -> b -> c -> d -> e -> f -> g -> h -> i -> j -> k -> l -> m -> n -> o -> p -> q -> r -> s -> t -> u -> v -> w -> x -> y -> z -> a_ -> b_ -> c_ -> d_ -> e_ -> f_ -> g_ -> h_ -> i_ -> j_ -> k_ -> l_ -> m_ -> n_ -> o_ -> p_ -> q_ -> r_ -> s_ -> t_ -> u_ -> v_ -> w_ -> x_ -> y_ -> z_ -> a__ -> b__ -> c__ -> d__ -> e__ -> f__ -> g__ -> h__ -> i__ -> j__ -> (,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,) a b c d e f g h i j k l m n o p q r s t u v w x y z a_ b_ c_ d_ e_ f_ g_ h_ i_ j_ k_ l_ m_ n_ o_ p_ q_ r_ s_ t_ u_ v_ w_ x_ y_ z_ a__ b__ c__ d__ e__ f__ g__ h__ i__ j__ module GHC.Bool data Bool False :: Bool True :: Bool -- | GHC's primitive types and operations. Use GHC.Exts from the base -- package instead of importing this module directly. module GHC.Prim data Char# gtChar# :: Char# -> Char# -> Bool geChar# :: Char# -> Char# -> Bool eqChar# :: Char# -> Char# -> Bool neChar# :: Char# -> Char# -> Bool ltChar# :: Char# -> Char# -> Bool leChar# :: Char# -> Char# -> Bool ord# :: Char# -> Int# data Int# (+#) :: Int# -> Int# -> Int# (-#) :: Int# -> Int# -> Int# -- | Low word of signed integer multiply. (*#) :: Int# -> Int# -> Int# -- | Return non-zero if there is any possibility that the upper word of a -- signed integer multiply might contain useful information. Return zero -- only if you are completely sure that no overflow can occur. On a -- 32-bit platform, the recommmended implementation is to do a 32 x 32 -- -> 64 signed multiply, and subtract result[63:32] from (result[31] -- >>signed 31). If this is zero, meaning that the upper word is -- merely a sign extension of the lower one, no overflow can occur. -- -- On a 64-bit platform it is not always possible to acquire the top 64 -- bits of the result. Therefore, a recommended implementation is to take -- the absolute value of both operands, and return 0 iff bits[63:31] of -- them are zero, since that means that their magnitudes fit within 31 -- bits, so the magnitude of the product must fit into 62 bits. -- -- If in doubt, return non-zero, but do make an effort to create the -- correct answer for small args, since otherwise the performance of -- (*) :: Integer -> Integer -> Integer will be poor. mulIntMayOflo# :: Int# -> Int# -> Int# -- | Rounds towards zero. quotInt# :: Int# -> Int# -> Int# -- | Satisfies (quotInt# x y) *# y +# (remInt# x y) == x. remInt# :: Int# -> Int# -> Int# negateInt# :: Int# -> Int# -- | Add with carry. First member of result is (wrapped) sum; second member -- is 0 iff no overflow occured. addIntC# :: Int# -> Int# -> (# Int#, Int# #) -- | Subtract with carry. First member of result is (wrapped) difference; -- second member is 0 iff no overflow occured. subIntC# :: Int# -> Int# -> (# Int#, Int# #) (>#) :: Int# -> Int# -> Bool (>=#) :: Int# -> Int# -> Bool (==#) :: Int# -> Int# -> Bool (/=#) :: Int# -> Int# -> Bool (<#) :: Int# -> Int# -> Bool (<=#) :: Int# -> Int# -> Bool chr# :: Int# -> Char# int2Word# :: Int# -> Word# int2Float# :: Int# -> Float# int2Double# :: Int# -> Double# -- | Shift left. Result undefined if shift amount is not in the range 0 to -- word size - 1 inclusive. uncheckedIShiftL# :: Int# -> Int# -> Int# -- | Shift right arithmetic. Result undefined if shift amount is not in the -- range 0 to word size - 1 inclusive. uncheckedIShiftRA# :: Int# -> Int# -> Int# -- | Shift right logical. Result undefined if shift amount is not in the -- range 0 to word size - 1 inclusive. uncheckedIShiftRL# :: Int# -> Int# -> Int# data Word# plusWord# :: Word# -> Word# -> Word# minusWord# :: Word# -> Word# -> Word# timesWord# :: Word# -> Word# -> Word# quotWord# :: Word# -> Word# -> Word# remWord# :: Word# -> Word# -> Word# and# :: Word# -> Word# -> Word# or# :: Word# -> Word# -> Word# xor# :: Word# -> Word# -> Word# not# :: Word# -> Word# -- | Shift left logical. Result undefined if shift amount is not in the -- range 0 to word size - 1 inclusive. uncheckedShiftL# :: Word# -> Int# -> Word# -- | Shift right logical. Result undefined if shift amount is not in the -- range 0 to word size - 1 inclusive. uncheckedShiftRL# :: Word# -> Int# -> Word# word2Int# :: Word# -> Int# gtWord# :: Word# -> Word# -> Bool geWord# :: Word# -> Word# -> Bool eqWord# :: Word# -> Word# -> Bool neWord# :: Word# -> Word# -> Bool ltWord# :: Word# -> Word# -> Bool leWord# :: Word# -> Word# -> Bool narrow8Int# :: Int# -> Int# narrow16Int# :: Int# -> Int# narrow32Int# :: Int# -> Int# narrow8Word# :: Word# -> Word# narrow16Word# :: Word# -> Word# narrow32Word# :: Word# -> Word# data Double# (>##) :: Double# -> Double# -> Bool (>=##) :: Double# -> Double# -> Bool (==##) :: Double# -> Double# -> Bool (/=##) :: Double# -> Double# -> Bool (<##) :: Double# -> Double# -> Bool (<=##) :: Double# -> Double# -> Bool (+##) :: Double# -> Double# -> Double# (-##) :: Double# -> Double# -> Double# (*##) :: Double# -> Double# -> Double# (/##) :: Double# -> Double# -> Double# negateDouble# :: Double# -> Double# -- | Truncates a Double. Results are undefined if the truncation -- if truncation yields a value outside the range of Int#. double2Int# :: Double# -> Int# double2Float# :: Double# -> Float# expDouble# :: Double# -> Double# logDouble# :: Double# -> Double# sqrtDouble# :: Double# -> Double# sinDouble# :: Double# -> Double# cosDouble# :: Double# -> Double# tanDouble# :: Double# -> Double# asinDouble# :: Double# -> Double# acosDouble# :: Double# -> Double# atanDouble# :: Double# -> Double# sinhDouble# :: Double# -> Double# coshDouble# :: Double# -> Double# tanhDouble# :: Double# -> Double# -- | Exponentiation. (**##) :: Double# -> Double# -> Double# -- | Convert to integer. First component of the result is -1 or 1, -- indicating the sign of the mantissa. The next two are the high and low -- 32 bits of the mantissa respectively, and the last is the exponent. decodeDouble_2Int# :: Double# -> (# Int#, Word#, Word#, Int# #) data Float# gtFloat# :: Float# -> Float# -> Bool geFloat# :: Float# -> Float# -> Bool eqFloat# :: Float# -> Float# -> Bool neFloat# :: Float# -> Float# -> Bool ltFloat# :: Float# -> Float# -> Bool leFloat# :: Float# -> Float# -> Bool plusFloat# :: Float# -> Float# -> Float# minusFloat# :: Float# -> Float# -> Float# timesFloat# :: Float# -> Float# -> Float# divideFloat# :: Float# -> Float# -> Float# negateFloat# :: Float# -> Float# -- | Truncates a Float. Results are undefined if the truncation if -- truncation yields a value outside the range of Int#. float2Int# :: Float# -> Int# expFloat# :: Float# -> Float# logFloat# :: Float# -> Float# sqrtFloat# :: Float# -> Float# sinFloat# :: Float# -> Float# cosFloat# :: Float# -> Float# tanFloat# :: Float# -> Float# asinFloat# :: Float# -> Float# acosFloat# :: Float# -> Float# atanFloat# :: Float# -> Float# sinhFloat# :: Float# -> Float# coshFloat# :: Float# -> Float# tanhFloat# :: Float# -> Float# powerFloat# :: Float# -> Float# -> Float# float2Double# :: Float# -> Double# -- | Convert to integers. First Int# in result is the mantissa; -- second is the exponent. decodeFloat_Int# :: Float# -> (# Int#, Int# #) data Array# a data MutableArray# s a -- | Create a new mutable array with the specified number of elements, in -- the specified state thread, with each element containing the specified -- initial value. newArray# :: Int# -> a -> State# s -> (# State# s, MutableArray# s a #) sameMutableArray# :: MutableArray# s a -> MutableArray# s a -> Bool -- | Read from specified index of mutable array. Result is not yet -- evaluated. readArray# :: MutableArray# s a -> Int# -> State# s -> (# State# s, a #) -- | Write to specified index of mutable array. writeArray# :: MutableArray# s a -> Int# -> a -> State# s -> State# s -- | Read from specified index of immutable array. Result is packaged into -- an unboxed singleton; the result itself is not yet evaluated. indexArray# :: Array# a -> Int# -> (# a #) -- | Make a mutable array immutable, without copying. unsafeFreezeArray# :: MutableArray# s a -> State# s -> (# State# s, Array# a #) -- | Make an immutable array mutable, without copying. unsafeThawArray# :: Array# a -> State# s -> (# State# s, MutableArray# s a #) data ByteArray# data MutableByteArray# s -- | Create a new mutable byte array of specified size (in bytes), in the -- specified state thread. newByteArray# :: Int# -> State# s -> (# State# s, MutableByteArray# s #) -- | Create a mutable byte array that the GC guarantees not to move. newPinnedByteArray# :: Int# -> State# s -> (# State# s, MutableByteArray# s #) -- | Create a mutable byte array, aligned by the specified amount, that the -- GC guarantees not to move. newAlignedPinnedByteArray# :: Int# -> Int# -> State# s -> (# State# s, MutableByteArray# s #) -- | Intended for use with pinned arrays; otherwise very unsafe! byteArrayContents# :: ByteArray# -> Addr# sameMutableByteArray# :: MutableByteArray# s -> MutableByteArray# s -> Bool -- | Make a mutable byte array immutable, without copying. unsafeFreezeByteArray# :: MutableByteArray# s -> State# s -> (# State# s, ByteArray# #) -- | Return the size of the array in bytes. sizeofByteArray# :: ByteArray# -> Int# -- | Return the size of the array in bytes. sizeofMutableByteArray# :: MutableByteArray# s -> Int# -- | Read 8-bit character; offset in bytes. indexCharArray# :: ByteArray# -> Int# -> Char# -- | Read 31-bit character; offset in 4-byte words. indexWideCharArray# :: ByteArray# -> Int# -> Char# indexIntArray# :: ByteArray# -> Int# -> Int# indexWordArray# :: ByteArray# -> Int# -> Word# indexAddrArray# :: ByteArray# -> Int# -> Addr# indexFloatArray# :: ByteArray# -> Int# -> Float# indexDoubleArray# :: ByteArray# -> Int# -> Double# indexStablePtrArray# :: ByteArray# -> Int# -> StablePtr# a indexInt8Array# :: ByteArray# -> Int# -> Int# indexInt16Array# :: ByteArray# -> Int# -> Int# indexInt32Array# :: ByteArray# -> Int# -> Int# indexInt64Array# :: ByteArray# -> Int# -> Int# indexWord8Array# :: ByteArray# -> Int# -> Word# indexWord16Array# :: ByteArray# -> Int# -> Word# indexWord32Array# :: ByteArray# -> Int# -> Word# indexWord64Array# :: ByteArray# -> Int# -> Word# -- | Read 8-bit character; offset in bytes. readCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Char# #) -- | Read 31-bit character; offset in 4-byte words. readWideCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Char# #) readIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readWordArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readAddrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Addr# #) readFloatArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Float# #) readDoubleArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Double# #) readStablePtrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, StablePtr# a #) readInt8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readInt16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readInt32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readInt64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readWord8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readWord16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readWord32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readWord64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) -- | Write 8-bit character; offset in bytes. writeCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s -- | Write 31-bit character; offset in 4-byte words. writeWideCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s writeIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeWordArray# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeAddrArray# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s writeFloatArray# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s writeDoubleArray# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s writeStablePtrArray# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s writeInt8Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt16Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt32Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt64Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeWord8Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord16Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord32Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord64Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s -- | An arbitrary machine address assumed to point outside the -- garbage-collected heap. data Addr# -- | The null address. nullAddr# :: Addr# plusAddr# :: Addr# -> Int# -> Addr# -- | Result is meaningless if two Addr#s are so far apart that -- their difference doesn't fit in an Int#. minusAddr# :: Addr# -> Addr# -> Int# -- | Return the remainder when the Addr# arg, treated like an -- Int#, is divided by the Int# arg. remAddr# :: Addr# -> Int# -> Int# -- | Coerce directly from address to int. Strongly deprecated. addr2Int# :: Addr# -> Int# -- | Coerce directly from int to address. Strongly deprecated. int2Addr# :: Int# -> Addr# gtAddr# :: Addr# -> Addr# -> Bool geAddr# :: Addr# -> Addr# -> Bool eqAddr# :: Addr# -> Addr# -> Bool neAddr# :: Addr# -> Addr# -> Bool ltAddr# :: Addr# -> Addr# -> Bool leAddr# :: Addr# -> Addr# -> Bool -- | Reads 8-bit character; offset in bytes. indexCharOffAddr# :: Addr# -> Int# -> Char# -- | Reads 31-bit character; offset in 4-byte words. indexWideCharOffAddr# :: Addr# -> Int# -> Char# indexIntOffAddr# :: Addr# -> Int# -> Int# indexWordOffAddr# :: Addr# -> Int# -> Word# indexAddrOffAddr# :: Addr# -> Int# -> Addr# indexFloatOffAddr# :: Addr# -> Int# -> Float# indexDoubleOffAddr# :: Addr# -> Int# -> Double# indexStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a indexInt8OffAddr# :: Addr# -> Int# -> Int# indexInt16OffAddr# :: Addr# -> Int# -> Int# indexInt32OffAddr# :: Addr# -> Int# -> Int# indexInt64OffAddr# :: Addr# -> Int# -> Int# indexWord8OffAddr# :: Addr# -> Int# -> Word# indexWord16OffAddr# :: Addr# -> Int# -> Word# indexWord32OffAddr# :: Addr# -> Int# -> Word# indexWord64OffAddr# :: Addr# -> Int# -> Word# -- | Reads 8-bit character; offset in bytes. readCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Char# #) -- | Reads 31-bit character; offset in 4-byte words. readWideCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Char# #) readIntOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readWordOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readAddrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Addr# #) readFloatOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Float# #) readDoubleOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Double# #) readStablePtrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, StablePtr# a #) readInt8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readInt16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readInt32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readInt64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readWord8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readWord16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readWord32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readWord64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) writeCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s writeWideCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s writeIntOffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeWordOffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeAddrOffAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s writeFloatOffAddr# :: Addr# -> Int# -> Float# -> State# s -> State# s writeDoubleOffAddr# :: Addr# -> Int# -> Double# -> State# s -> State# s writeStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a -> State# s -> State# s writeInt8OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt16OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt32OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt64OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeWord8OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord16OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord32OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord64OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s -- | A MutVar# behaves like a single-element mutable array. data MutVar# s a -- | Create MutVar# with specified initial value in specified -- state thread. newMutVar# :: a -> State# s -> (# State# s, MutVar# s a #) -- | Read contents of MutVar#. Result is not yet evaluated. readMutVar# :: MutVar# s a -> State# s -> (# State# s, a #) -- | Write contents of MutVar#. writeMutVar# :: MutVar# s a -> a -> State# s -> State# s sameMutVar# :: MutVar# s a -> MutVar# s a -> Bool atomicModifyMutVar# :: MutVar# s a -> (a -> b) -> State# s -> (# State# s, c #) catch# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) raise# :: a -> b raiseIO# :: a -> State# (RealWorld) -> (# State# (RealWorld), b #) maskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) maskUninterruptible# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) unmaskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) getMaskingState# :: State# (RealWorld) -> (# State# (RealWorld), Int# #) data TVar# s a atomically# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) retry# :: State# (RealWorld) -> (# State# (RealWorld), a #) catchRetry# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) catchSTM# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) check# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), () #) -- | Create a new TVar# holding a specified initial value. newTVar# :: a -> State# s -> (# State# s, TVar# s a #) -- | Read contents of TVar#. Result is not yet evaluated. readTVar# :: TVar# s a -> State# s -> (# State# s, a #) -- | Read contents of TVar# outside an STM transaction readTVarIO# :: TVar# s a -> State# s -> (# State# s, a #) -- | Write contents of TVar#. writeTVar# :: TVar# s a -> a -> State# s -> State# s sameTVar# :: TVar# s a -> TVar# s a -> Bool -- | A shared mutable variable (not the same as a -- MutVar#!). (Note: in a non-concurrent implementation, -- (MVar# a) can be represented by (MutVar# (Maybe -- a)).) data MVar# s a -- | Create new MVar#; initially empty. newMVar# :: State# s -> (# State# s, MVar# s a #) -- | If MVar# is empty, block until it becomes full. Then remove -- and return its contents, and set it empty. takeMVar# :: MVar# s a -> State# s -> (# State# s, a #) -- | If MVar# is empty, immediately return with integer 0 and -- value undefined. Otherwise, return with integer 1 and contents of -- MVar#, and set MVar# empty. tryTakeMVar# :: MVar# s a -> State# s -> (# State# s, Int#, a #) -- | If MVar# is full, block until it becomes empty. Then store -- value arg as its new contents. putMVar# :: MVar# s a -> a -> State# s -> State# s -- | If MVar# is full, immediately return with integer 0. -- Otherwise, store value arg as MVar#'s new contents, and -- return with integer 1. tryPutMVar# :: MVar# s a -> a -> State# s -> (# State# s, Int# #) sameMVar# :: MVar# s a -> MVar# s a -> Bool -- | Return 1 if MVar# is empty; 0 otherwise. isEmptyMVar# :: MVar# s a -> State# s -> (# State# s, Int# #) -- | Sleep specified number of microseconds. delay# :: Int# -> State# s -> State# s -- | Block until input is available on specified file descriptor. waitRead# :: Int# -> State# s -> State# s -- | Block until output is possible on specified file descriptor. waitWrite# :: Int# -> State# s -> State# s -- | State# is the primitive, unlifted type of states. It has one -- type parameter, thus State# RealWorld, or State# s, -- where s is a type variable. The only purpose of the type parameter is -- to keep different state threads separate. It is represented by nothing -- at all. data State# s -- | RealWorld is deeply magical. It is primitive, but it -- is not unlifted (hence ptrArg). We never manipulate -- values of type RealWorld; it's only used in the type system, -- to parameterise State#. data RealWorld -- | (In a non-concurrent implementation, this can be a singleton type, -- whose (unique) value is returned by myThreadId#. The other -- operations can be omitted.) data ThreadId# fork# :: a -> State# (RealWorld) -> (# State# (RealWorld), ThreadId# #) forkOn# :: Int# -> a -> State# (RealWorld) -> (# State# (RealWorld), ThreadId# #) killThread# :: ThreadId# -> a -> State# (RealWorld) -> State# (RealWorld) yield# :: State# (RealWorld) -> State# (RealWorld) myThreadId# :: State# (RealWorld) -> (# State# (RealWorld), ThreadId# #) labelThread# :: ThreadId# -> Addr# -> State# (RealWorld) -> State# (RealWorld) isCurrentThreadBound# :: State# (RealWorld) -> (# State# (RealWorld), Int# #) noDuplicate# :: State# (RealWorld) -> State# (RealWorld) threadStatus# :: ThreadId# -> State# (RealWorld) -> (# State# (RealWorld), Int# #) data Weak# b mkWeak# :: o -> b -> c -> State# (RealWorld) -> (# State# (RealWorld), Weak# b #) mkWeakForeignEnv# :: o -> b -> Addr# -> Addr# -> Int# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld), Weak# b #) deRefWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld), Int#, a #) finalizeWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld), Int#, State# (RealWorld) -> (# State# (RealWorld), () #) #) touch# :: o -> State# (RealWorld) -> State# (RealWorld) data StablePtr# a data StableName# a makeStablePtr# :: a -> State# (RealWorld) -> (# State# (RealWorld), StablePtr# a #) deRefStablePtr# :: StablePtr# a -> State# (RealWorld) -> (# State# (RealWorld), a #) eqStablePtr# :: StablePtr# a -> StablePtr# a -> Int# makeStableName# :: a -> State# (RealWorld) -> (# State# (RealWorld), StableName# a #) eqStableName# :: StableName# a -> StableName# a -> Int# stableNameToInt# :: StableName# a -> Int# reallyUnsafePtrEquality# :: a -> a -> Int# par# :: a -> Int# getSpark# :: State# s -> (# State# s, Int#, a #) -- | Returns the number of sparks in the local spark pool. numSparks# :: State# s -> (# State# s, Int# #) parGlobal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int# parLocal# :: a -> Int# -> Int# -> Int# -> Int# -> b -> Int# parAt# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int# parAtAbs# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int# parAtRel# :: a -> Int# -> Int# -> Int# -> Int# -> Int# -> b -> Int# parAtForNow# :: b -> a -> Int# -> Int# -> Int# -> Int# -> c -> Int# dataToTag# :: a -> Int# tagToEnum# :: Int# -> a -- | Primitive bytecode type. data BCO# -- | Convert an Addr# to a followable type. addrToHValue# :: Addr# -> (# a #) mkApUpd0# :: BCO# -> (# a #) newBCO# :: ByteArray# -> ByteArray# -> Array# a -> Int# -> ByteArray# -> State# s -> (# State# s, BCO# #) unpackClosure# :: a -> (# Addr#, Array# b, ByteArray# #) getApStackVal# :: a -> Int# -> (# Int#, b #) traceCcs# :: a -> b -> b -- | Evaluates its first argument to head normal form, and then returns its -- second argument as the result. seq :: a -> b -> b -- | The call (inline f) arranges that f is inlined, regardless of -- its size. More precisely, the call (inline f) rewrites to the -- right-hand side of f's definition. This allows the programmer -- to control inlining from a particular call site rather than the -- definition site of the function (c.f. INLINE pragmas in -- User's Guide, Section 7.10.3, "INLINE and NOINLINE pragmas"). -- -- This inlining occurs regardless of the argument to the call or the -- size of f's definition; it is unconditional. The main caveat -- is that f's definition must be visible to the compiler. That -- is, f must be let-bound in the current scope. If no -- inlining takes place, the inline function expands to the -- identity function in Phase zero; so its use imposes no overhead. -- -- It is good practice to mark the function with an INLINABLE pragma at -- its definition, (a) so that GHC guarantees to expose its unfolding -- regardless of size, and (b) so that you have control over exactly what -- is inlined. inline :: a -> a -- | The lazy function restrains strictness analysis a little. The -- call (lazy e) means the same as e, but lazy -- has a magical property so far as strictness analysis is concerned: it -- is lazy in its first argument, even though its semantics is strict. -- After strictness analysis has run, calls to lazy are inlined -- to be the identity function. -- -- This behaviour is occasionally useful when controlling evaluation -- order. Notably, lazy is used in the library definition of -- Control.Parallel.par: -- --
--   par :: a -> b -> b
--   
-- --
--   par x y = case (par# x) of _ -> lazy y
--   
-- -- If lazy were not lazy, par would look strict in -- y which would defeat the whole purpose of par. -- -- Like seq, the argument of lazy can have an unboxed -- type. lazy :: a -> a -- | The type constructor Any is type to which you can unsafely -- coerce any lifted type, and back. -- -- -- -- It's also used to instantiate un-constrained type variables after type -- checking. For example -- --
--   length Any []
--   
-- -- Annoyingly, we sometimes need Anys of other kinds, such as -- (* -> *) etc. This is a bit like tuples. We define a -- couple of useful ones here, and make others up on the fly. If any of -- these others end up being exported into interface files, we'll get a -- crash; at least until we add interface-file syntax to support them. data Any a -- | The function unsafeCoerce# allows you to side-step the -- typechecker entirely. That is, it allows you to coerce any type into -- any other type. If you use this function, you had better get it right, -- otherwise segmentation faults await. It is generally used when you -- want to write a program that you know is well-typed, but where -- Haskell's type system is not expressive enough to prove that it is -- well typed. -- -- The following uses of unsafeCoerce# are supposed to work -- (i.e. not lead to spurious compile-time or run-time crashes): -- -- -- -- Other uses of unsafeCoerce# are undefined. In particular, you -- should not use unsafeCoerce# to cast a T to an algebraic data -- type D, unless T is also an algebraic data type. For example, do not -- cast Int->Int to Bool, even if you later cast -- that Bool back to Int->Int before applying it. -- The reasons have to do with GHC's internal representation details (for -- the congnoscenti, data values can be entered but function closures -- cannot). If you want a safe type to cast things to, use Any, -- which is not an algebraic data type. unsafeCoerce# :: a -> b -- | Emits an event via the RTS tracing framework. The contents of the -- event is the zero-terminated byte string passed as the first argument. -- The event will be emitted either to the .eventlog file, or to stderr, -- depending on the runtime RTS flags. traceEvent# :: Addr# -> State# s -> State# s module GHC.PrimopWrappers gtChar# :: Char# -> Char# -> Bool geChar# :: Char# -> Char# -> Bool eqChar# :: Char# -> Char# -> Bool neChar# :: Char# -> Char# -> Bool ltChar# :: Char# -> Char# -> Bool leChar# :: Char# -> Char# -> Bool ord# :: Char# -> Int# (+#) :: Int# -> Int# -> Int# (-#) :: Int# -> Int# -> Int# (*#) :: Int# -> Int# -> Int# mulIntMayOflo# :: Int# -> Int# -> Int# quotInt# :: Int# -> Int# -> Int# remInt# :: Int# -> Int# -> Int# negateInt# :: Int# -> Int# addIntC# :: Int# -> Int# -> (# Int#, Int# #) subIntC# :: Int# -> Int# -> (# Int#, Int# #) (>#) :: Int# -> Int# -> Bool (>=#) :: Int# -> Int# -> Bool (==#) :: Int# -> Int# -> Bool (/=#) :: Int# -> Int# -> Bool (<#) :: Int# -> Int# -> Bool (<=#) :: Int# -> Int# -> Bool chr# :: Int# -> Char# int2Word# :: Int# -> Word# int2Float# :: Int# -> Float# int2Double# :: Int# -> Double# uncheckedIShiftL# :: Int# -> Int# -> Int# uncheckedIShiftRA# :: Int# -> Int# -> Int# uncheckedIShiftRL# :: Int# -> Int# -> Int# plusWord# :: Word# -> Word# -> Word# minusWord# :: Word# -> Word# -> Word# timesWord# :: Word# -> Word# -> Word# quotWord# :: Word# -> Word# -> Word# remWord# :: Word# -> Word# -> Word# and# :: Word# -> Word# -> Word# or# :: Word# -> Word# -> Word# xor# :: Word# -> Word# -> Word# not# :: Word# -> Word# uncheckedShiftL# :: Word# -> Int# -> Word# uncheckedShiftRL# :: Word# -> Int# -> Word# word2Int# :: Word# -> Int# gtWord# :: Word# -> Word# -> Bool geWord# :: Word# -> Word# -> Bool eqWord# :: Word# -> Word# -> Bool neWord# :: Word# -> Word# -> Bool ltWord# :: Word# -> Word# -> Bool leWord# :: Word# -> Word# -> Bool narrow8Int# :: Int# -> Int# narrow16Int# :: Int# -> Int# narrow32Int# :: Int# -> Int# narrow8Word# :: Word# -> Word# narrow16Word# :: Word# -> Word# narrow32Word# :: Word# -> Word# (>##) :: Double# -> Double# -> Bool (>=##) :: Double# -> Double# -> Bool (==##) :: Double# -> Double# -> Bool (/=##) :: Double# -> Double# -> Bool (<##) :: Double# -> Double# -> Bool (<=##) :: Double# -> Double# -> Bool (+##) :: Double# -> Double# -> Double# (-##) :: Double# -> Double# -> Double# (*##) :: Double# -> Double# -> Double# (/##) :: Double# -> Double# -> Double# negateDouble# :: Double# -> Double# double2Int# :: Double# -> Int# double2Float# :: Double# -> Float# expDouble# :: Double# -> Double# logDouble# :: Double# -> Double# sqrtDouble# :: Double# -> Double# sinDouble# :: Double# -> Double# cosDouble# :: Double# -> Double# tanDouble# :: Double# -> Double# asinDouble# :: Double# -> Double# acosDouble# :: Double# -> Double# atanDouble# :: Double# -> Double# sinhDouble# :: Double# -> Double# coshDouble# :: Double# -> Double# tanhDouble# :: Double# -> Double# (**##) :: Double# -> Double# -> Double# decodeDouble_2Int# :: Double# -> (# Int#, Word#, Word#, Int# #) gtFloat# :: Float# -> Float# -> Bool geFloat# :: Float# -> Float# -> Bool eqFloat# :: Float# -> Float# -> Bool neFloat# :: Float# -> Float# -> Bool ltFloat# :: Float# -> Float# -> Bool leFloat# :: Float# -> Float# -> Bool plusFloat# :: Float# -> Float# -> Float# minusFloat# :: Float# -> Float# -> Float# timesFloat# :: Float# -> Float# -> Float# divideFloat# :: Float# -> Float# -> Float# negateFloat# :: Float# -> Float# float2Int# :: Float# -> Int# expFloat# :: Float# -> Float# logFloat# :: Float# -> Float# sqrtFloat# :: Float# -> Float# sinFloat# :: Float# -> Float# cosFloat# :: Float# -> Float# tanFloat# :: Float# -> Float# asinFloat# :: Float# -> Float# acosFloat# :: Float# -> Float# atanFloat# :: Float# -> Float# sinhFloat# :: Float# -> Float# coshFloat# :: Float# -> Float# tanhFloat# :: Float# -> Float# powerFloat# :: Float# -> Float# -> Float# float2Double# :: Float# -> Double# decodeFloat_Int# :: Float# -> (# Int#, Int# #) newArray# :: Int# -> a -> State# s -> (# State# s, MutableArray# s a #) sameMutableArray# :: MutableArray# s a -> MutableArray# s a -> Bool readArray# :: MutableArray# s a -> Int# -> State# s -> (# State# s, a #) writeArray# :: MutableArray# s a -> Int# -> a -> State# s -> State# s indexArray# :: Array# a -> Int# -> (# a #) unsafeFreezeArray# :: MutableArray# s a -> State# s -> (# State# s, Array# a #) unsafeThawArray# :: Array# a -> State# s -> (# State# s, MutableArray# s a #) newByteArray# :: Int# -> State# s -> (# State# s, MutableByteArray# s #) newPinnedByteArray# :: Int# -> State# s -> (# State# s, MutableByteArray# s #) newAlignedPinnedByteArray# :: Int# -> Int# -> State# s -> (# State# s, MutableByteArray# s #) byteArrayContents# :: ByteArray# -> Addr# sameMutableByteArray# :: MutableByteArray# s -> MutableByteArray# s -> Bool unsafeFreezeByteArray# :: MutableByteArray# s -> State# s -> (# State# s, ByteArray# #) sizeofByteArray# :: ByteArray# -> Int# sizeofMutableByteArray# :: MutableByteArray# s -> Int# indexCharArray# :: ByteArray# -> Int# -> Char# indexWideCharArray# :: ByteArray# -> Int# -> Char# indexIntArray# :: ByteArray# -> Int# -> Int# indexWordArray# :: ByteArray# -> Int# -> Word# indexAddrArray# :: ByteArray# -> Int# -> Addr# indexFloatArray# :: ByteArray# -> Int# -> Float# indexDoubleArray# :: ByteArray# -> Int# -> Double# indexStablePtrArray# :: ByteArray# -> Int# -> StablePtr# a indexInt8Array# :: ByteArray# -> Int# -> Int# indexInt16Array# :: ByteArray# -> Int# -> Int# indexInt32Array# :: ByteArray# -> Int# -> Int# indexInt64Array# :: ByteArray# -> Int# -> Int# indexWord8Array# :: ByteArray# -> Int# -> Word# indexWord16Array# :: ByteArray# -> Int# -> Word# indexWord32Array# :: ByteArray# -> Int# -> Word# indexWord64Array# :: ByteArray# -> Int# -> Word# readCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Char# #) readWideCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Char# #) readIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readWordArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readAddrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Addr# #) readFloatArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Float# #) readDoubleArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Double# #) readStablePtrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, StablePtr# a #) readInt8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readInt16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readInt32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readInt64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Int# #) readWord8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readWord16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readWord32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) readWord64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Word# #) writeCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s writeWideCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s writeIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeWordArray# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeAddrArray# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s writeFloatArray# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s writeDoubleArray# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s writeStablePtrArray# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s writeInt8Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt16Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt32Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeInt64Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s writeWord8Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord16Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord32Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s writeWord64Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s plusAddr# :: Addr# -> Int# -> Addr# minusAddr# :: Addr# -> Addr# -> Int# remAddr# :: Addr# -> Int# -> Int# addr2Int# :: Addr# -> Int# int2Addr# :: Int# -> Addr# gtAddr# :: Addr# -> Addr# -> Bool geAddr# :: Addr# -> Addr# -> Bool eqAddr# :: Addr# -> Addr# -> Bool neAddr# :: Addr# -> Addr# -> Bool ltAddr# :: Addr# -> Addr# -> Bool leAddr# :: Addr# -> Addr# -> Bool indexCharOffAddr# :: Addr# -> Int# -> Char# indexWideCharOffAddr# :: Addr# -> Int# -> Char# indexIntOffAddr# :: Addr# -> Int# -> Int# indexWordOffAddr# :: Addr# -> Int# -> Word# indexAddrOffAddr# :: Addr# -> Int# -> Addr# indexFloatOffAddr# :: Addr# -> Int# -> Float# indexDoubleOffAddr# :: Addr# -> Int# -> Double# indexStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a indexInt8OffAddr# :: Addr# -> Int# -> Int# indexInt16OffAddr# :: Addr# -> Int# -> Int# indexInt32OffAddr# :: Addr# -> Int# -> Int# indexInt64OffAddr# :: Addr# -> Int# -> Int# indexWord8OffAddr# :: Addr# -> Int# -> Word# indexWord16OffAddr# :: Addr# -> Int# -> Word# indexWord32OffAddr# :: Addr# -> Int# -> Word# indexWord64OffAddr# :: Addr# -> Int# -> Word# readCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Char# #) readWideCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Char# #) readIntOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readWordOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readAddrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Addr# #) readFloatOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Float# #) readDoubleOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Double# #) readStablePtrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, StablePtr# a #) readInt8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readInt16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readInt32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readInt64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Int# #) readWord8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readWord16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readWord32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) readWord64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Word# #) writeCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s writeWideCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s writeIntOffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeWordOffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeAddrOffAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s writeFloatOffAddr# :: Addr# -> Int# -> Float# -> State# s -> State# s writeDoubleOffAddr# :: Addr# -> Int# -> Double# -> State# s -> State# s writeStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a -> State# s -> State# s writeInt8OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt16OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt32OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeInt64OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s writeWord8OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord16OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord32OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s writeWord64OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s newMutVar# :: a -> State# s -> (# State# s, MutVar# s a #) readMutVar# :: MutVar# s a -> State# s -> (# State# s, a #) writeMutVar# :: MutVar# s a -> a -> State# s -> State# s sameMutVar# :: MutVar# s a -> MutVar# s a -> Bool atomicModifyMutVar# :: MutVar# s a -> (a -> b) -> State# s -> (# State# s, c #) catch# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) raise# :: a -> b raiseIO# :: a -> State# (RealWorld) -> (# State# (RealWorld), b #) maskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) maskUninterruptible# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) unmaskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) getMaskingState# :: State# (RealWorld) -> (# State# (RealWorld), Int# #) atomically# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) retry# :: State# (RealWorld) -> (# State# (RealWorld), a #) catchRetry# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) catchSTM# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), a #) check# :: (State# (RealWorld) -> (# State# (RealWorld), a #)) -> State# (RealWorld) -> (# State# (RealWorld), () #) newTVar# :: a -> State# s -> (# State# s, TVar# s a #) readTVar# :: TVar# s a -> State# s -> (# State# s, a #) readTVarIO# :: TVar# s a -> State# s -> (# State# s, a #) writeTVar# :: TVar# s a -> a -> State# s -> State# s sameTVar# :: TVar# s a -> TVar# s a -> Bool newMVar# :: State# s -> (# State# s, MVar# s a #) takeMVar# :: MVar# s a -> State# s -> (# State# s, a #) tryTakeMVar# :: MVar# s a -> State# s -> (# State# s, Int#, a #) putMVar# :: MVar# s a -> a -> State# s -> State# s tryPutMVar# :: MVar# s a -> a -> State# s -> (# State# s, Int# #) sameMVar# :: MVar# s a -> MVar# s a -> Bool isEmptyMVar# :: MVar# s a -> State# s -> (# State# s, Int# #) delay# :: Int# -> State# s -> State# s waitRead# :: Int# -> State# s -> State# s waitWrite# :: Int# -> State# s -> State# s fork# :: a -> State# (RealWorld) -> (# State# (RealWorld), ThreadId# #) forkOn# :: Int# -> a -> State# (RealWorld) -> (# State# (RealWorld), ThreadId# #) killThread# :: ThreadId# -> a -> State# (RealWorld) -> State# (RealWorld) yield# :: State# (RealWorld) -> State# (RealWorld) myThreadId# :: State# (RealWorld) -> (# State# (RealWorld), ThreadId# #) labelThread# :: ThreadId# -> Addr# -> State# (RealWorld) -> State# (RealWorld) isCurrentThreadBound# :: State# (RealWorld) -> (# State# (RealWorld), Int# #) noDuplicate# :: State# (RealWorld) -> State# (RealWorld) threadStatus# :: ThreadId# -> State# (RealWorld) -> (# State# (RealWorld), Int# #) mkWeak# :: o -> b -> c -> State# (RealWorld) -> (# State# (RealWorld), Weak# b #) mkWeakForeignEnv# :: o -> b -> Addr# -> Addr# -> Int# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld), Weak# b #) deRefWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld), Int#, a #) finalizeWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld), Int#, State# (RealWorld) -> (# State# (RealWorld), () #) #) touch# :: o -> State# (RealWorld) -> State# (RealWorld) makeStablePtr# :: a -> State# (RealWorld) -> (# State# (RealWorld), StablePtr# a #) deRefStablePtr# :: StablePtr# a -> State# (RealWorld) -> (# State# (RealWorld), a #) eqStablePtr# :: StablePtr# a -> StablePtr# a -> Int# makeStableName# :: a -> State# (RealWorld) -> (# State# (RealWorld), StableName# a #) eqStableName# :: StableName# a -> StableName# a -> Int# stableNameToInt# :: StableName# a -> Int# reallyUnsafePtrEquality# :: a -> a -> Int# getSpark# :: State# s -> (# State# s, Int#, a #) numSparks# :: State# s -> (# State# s, Int# #) dataToTag# :: a -> Int# addrToHValue# :: Addr# -> (# a #) mkApUpd0# :: BCO# -> (# a #) newBCO# :: ByteArray# -> ByteArray# -> Array# a -> Int# -> ByteArray# -> State# s -> (# State# s, BCO# #) unpackClosure# :: a -> (# Addr#, Array# b, ByteArray# #) getApStackVal# :: a -> Int# -> (# Int#, b #) traceCcs# :: a -> b -> b traceEvent# :: Addr# -> State# s -> State# s