ghc-prim 0.8.0 → 0.13.0
raw patch · 18 files changed
Files
- GHC/CString.hs +9/−8
- GHC/Classes.hs +1608/−908
- GHC/Debug.hs +5/−0
- GHC/Magic.hs +28/−7
- GHC/Magic/Dict.hs +72/−0
- GHC/Prim/Exception.hs +10/−19
- GHC/Prim/Ext.hs +169/−25
- GHC/Prim/Panic.hs +18/−2
- GHC/Prim/PtrEq.hs +153/−0
- GHC/PrimopWrappers.hs +2213/−1926
- GHC/Tuple.hs +465/−97
- GHC/Types.hs +3675/−549
- cbits/atomic.c +18/−63
- cbits/bitrev.c +0/−1
- cbits/longlong.c +0/−2
- cbits/mulIntMayOflo.c +3/−0
- changelog.md +388/−5
- ghc-prim.cabal +34/−18
GHC/CString.hs view
@@ -5,7 +5,7 @@ -- Copyright : (c) The University of Glasgow 2011 -- License : see libraries/ghc-prim/LICENSE ----- Maintainer : cvs-ghc@haskell.org+-- Maintainer : ghc-devs@haskell.org -- Stability : internal -- Portability : non-portable (GHC Extensions) --@@ -135,9 +135,9 @@ All of this goes for unpackCStringUtf8# too. -} -{- Note [Inlining of unpackFoldrCString]+{-+Note [Inlining of unpackFoldrCString] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- Usually the unpack-list rule turns unpackFoldrCString# into unpackCString# It also has a BuiltInRule in PrelRules.hs: unpackFoldrCString# "foo" c (unpackFoldrCString# "baz" c n)@@ -154,9 +154,8 @@ This is especially important for elem which then results in an allocation free loop. - Note [unpackCString# iterating over addr]+Note [unpackCString# iterating over addr] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~- When unpacking unpackCString# and friends repeatedly return a cons cell containing: * The current character we just unpacked.@@ -175,7 +174,6 @@ This has the additional advantage the we can guarantee that only the increment will happen in the loop.- -} unpackCString# :: Addr# -> [Char]@@ -227,7 +225,6 @@ -- See Note [unpackCString# iterating over addr] !ch = indexCharOffAddr# addr 0# - unpackAppendCStringUtf8# :: Addr# -> [Char] -> [Char] {-# NOINLINE unpackAppendCStringUtf8# #-} -- See the NOINLINE note on unpackCString#@@ -290,8 +287,12 @@ ---------------------------------- UTF8 decoding utilities+--- UTF-8 decoding utilities ------------------------------+--+-- This is one of several UTF-8 implementations provided by GHC; see Note+-- [GHC's many UTF-8 implementations] in "GHC.Encoding.UTF8" for an+-- overview. -- -- These functions make explicit the logic that was originally -- part of unpackCStringUtf8. Since we want the same support for ascii
GHC/Classes.hs view
@@ -1,908 +1,1608 @@-{-# LANGUAGE CPP, Trustworthy #-}-{-# LANGUAGE NoImplicitPrelude, MagicHash, StandaloneDeriving, BangPatterns,- KindSignatures, DataKinds, ConstraintKinds,- MultiParamTypeClasses, FunctionalDependencies #-}-{-# LANGUAGE AllowAmbiguousTypes #-}- -- ip :: IP x a => a is strictly speaking ambiguous, but IP is magic-{-# LANGUAGE UndecidableSuperClasses #-}- -- Because of the type-variable superclasses for tuples--{-# OPTIONS_GHC -Wno-unused-imports #-}--- -Wno-unused-imports needed for the GHC.Tuple import below. Sigh.--{-# OPTIONS_GHC -Wno-unused-top-binds #-}--- -Wno-unused-top-binds is there (I hope) to stop Haddock complaining--- about the constraint tuples being defined but not used--{-# OPTIONS_HADDOCK not-home #-}--------------------------------------------------------------------------------- |--- Module : GHC.Classes--- Copyright : (c) The University of Glasgow, 1992-2002--- License : see libraries/base/LICENSE------ Maintainer : cvs-ghc@haskell.org--- Stability : internal--- Portability : non-portable (GHC extensions)------ Basic classes.-----------------------------------------------------------------------------------module GHC.Classes(- -- * Implicit paramaters- IP(..),-- -- * Equality and ordering- Eq(..),- Ord(..),- -- ** Monomorphic equality operators- -- $matching_overloaded_methods_in_rules- eqInt, neInt,- eqWord, neWord,- eqChar, neChar,- eqFloat, eqDouble,- -- ** Monomorphic comparison operators- gtInt, geInt, leInt, ltInt, compareInt, compareInt#,- gtWord, geWord, leWord, ltWord, compareWord, compareWord#,-- -- * Functions over Bool- (&&), (||), not,-- -- * Integer arithmetic- divInt#, modInt#- ) where---- GHC.Magic is used in some derived instances-import GHC.Magic ()-import GHC.Prim-import GHC.Tuple-import GHC.CString (unpackCString#)-import GHC.Types--#include "MachDeps.h"--infix 4 ==, /=, <, <=, >=, >-infixr 3 &&-infixr 2 ||--default () -- Double isn't available yet---- | The syntax @?x :: a@ is desugared into @IP "x" a@--- IP is declared very early, so that libraries can take--- advantage of the implicit-call-stack feature-class IP (x :: Symbol) a | x -> a where- ip :: a--{- $matching_overloaded_methods_in_rules--Matching on class methods (e.g. @(==)@) in rewrite rules tends to be a bit-fragile. For instance, consider this motivating example from the @bytestring@-library,--@-break :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)-breakByte :: Word8 -> ByteString -> (ByteString, ByteString)-\{\-\# RULES "break -> breakByte" forall a. break (== x) = breakByte x \#\-\}-@--Here we have two functions, with @breakByte@ providing an optimized-implementation of @break@ where the predicate is merely testing for equality-with a known @Word8@. As written, however, this rule will be quite fragile as-the @(==)@ class operation rule may rewrite the predicate before our @break@-rule has a chance to fire.--For this reason, most of the primitive types in @base@ have 'Eq' and 'Ord'-instances defined in terms of helper functions with inlinings delayed to phase-1. For instance, @Word8@\'s @Eq@ instance looks like,--@-instance Eq Word8 where- (==) = eqWord8- (/=) = neWord8--eqWord8, neWord8 :: Word8 -> Word8 -> Bool-eqWord8 (W8# x) (W8# y) = ...-neWord8 (W8# x) (W8# y) = ...-\{\-\# INLINE [1] eqWord8 \#\-\}-\{\-\# INLINE [1] neWord8 \#\-\}-@--This allows us to save our @break@ rule above by rewriting it to instead match-against @eqWord8@,--@-\{\-\# RULES "break -> breakByte" forall a. break (`eqWord8` x) = breakByte x \#\-\}-@--Currently this is only done for @('==')@, @('/=')@, @('<')@, @('<=')@, @('>')@,-and @('>=')@ for the types in "GHC.Word" and "GHC.Int".--}---- | The 'Eq' class defines equality ('==') and inequality ('/=').--- All the basic datatypes exported by the "Prelude" are instances of 'Eq',--- and 'Eq' may be derived for any datatype whose constituents are also--- instances of 'Eq'.------ The Haskell Report defines no laws for 'Eq'. However, instances are--- encouraged to follow these properties:------ [__Reflexivity__]: @x == x@ = 'True'--- [__Symmetry__]: @x == y@ = @y == x@--- [__Transitivity__]: if @x == y && y == z@ = 'True', then @x == z@ = 'True'--- [__Extensionality__]: if @x == y@ = 'True' and @f@ is a function--- whose return type is an instance of 'Eq', then @f x == f y@ = 'True'--- [__Negation__]: @x /= y@ = @not (x == y)@------ Minimal complete definition: either '==' or '/='.----class Eq a where- (==), (/=) :: a -> a -> Bool-- {-# INLINE (/=) #-}- {-# INLINE (==) #-}- x /= y = not (x == y)- x == y = not (x /= y)- {-# MINIMAL (==) | (/=) #-}--deriving instance Eq ()-deriving instance Eq a => Eq (Solo a)-deriving instance (Eq a, Eq b) => Eq (a, b)-deriving instance (Eq a, Eq b, Eq c) => Eq (a, b, c)-deriving instance (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f)- => Eq (a, b, c, d, e, f)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g)- => Eq (a, b, c, d, e, f, g)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h)- => Eq (a, b, c, d, e, f, g, h)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i)- => Eq (a, b, c, d, e, f, g, h, i)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i, Eq j)- => Eq (a, b, c, d, e, f, g, h, i, j)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i, Eq j, Eq k)- => Eq (a, b, c, d, e, f, g, h, i, j, k)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i, Eq j, Eq k, Eq l)- => Eq (a, b, c, d, e, f, g, h, i, j, k, l)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i, Eq j, Eq k, Eq l, Eq m)- => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n)- => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,- Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o)- => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)--instance (Eq a) => Eq [a] where- {-# SPECIALISE instance Eq [[Char]] #-}- {-# SPECIALISE instance Eq [Char] #-}- {-# SPECIALISE instance Eq [Int] #-}- [] == [] = True- (x:xs) == (y:ys) = x == y && xs == ys- _xs == _ys = False--deriving instance Eq Module--instance Eq TrName where- TrNameS a == TrNameS b = isTrue# (a `eqAddr#` b)- a == b = toString a == toString b- where- toString (TrNameS s) = unpackCString# s- toString (TrNameD s) = s--deriving instance Eq Bool-deriving instance Eq Ordering--instance Eq Word where- (==) = eqWord- (/=) = neWord---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] eqWord #-}-{-# INLINE [1] neWord #-}-eqWord, neWord :: Word -> Word -> Bool-(W# x) `eqWord` (W# y) = isTrue# (x `eqWord#` y)-(W# x) `neWord` (W# y) = isTrue# (x `neWord#` y)---- See GHC.Classes#matching_overloaded_methods_in_rules-instance Eq Char where- (==) = eqChar- (/=) = neChar---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] eqChar #-}-{-# INLINE [1] neChar #-}-eqChar, neChar :: Char -> Char -> Bool-(C# x) `eqChar` (C# y) = isTrue# (x `eqChar#` y)-(C# x) `neChar` (C# y) = isTrue# (x `neChar#` y)---- | Note that due to the presence of @NaN@, `Float`'s 'Eq' instance does not--- satisfy reflexivity.------ >>> 0/0 == (0/0 :: Float)--- False------ Also note that `Float`'s 'Eq' instance does not satisfy extensionality:------ >>> 0 == (-0 :: Float)--- True--- >>> recip 0 == recip (-0 :: Float)--- False-instance Eq Float where- (==) = eqFloat---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] eqFloat #-}-eqFloat :: Float -> Float -> Bool-(F# x) `eqFloat` (F# y) = isTrue# (x `eqFloat#` y)---- | Note that due to the presence of @NaN@, `Double`'s 'Eq' instance does not--- satisfy reflexivity.------ >>> 0/0 == (0/0 :: Double)--- False------ Also note that `Double`'s 'Eq' instance does not satisfy substitutivity:------ >>> 0 == (-0 :: Double)--- True--- >>> recip 0 == recip (-0 :: Double)--- False-instance Eq Double where- (==) = eqDouble---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] eqDouble #-}-eqDouble :: Double -> Double -> Bool-(D# x) `eqDouble` (D# y) = isTrue# (x ==## y)--instance Eq Int where- (==) = eqInt- (/=) = neInt---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] eqInt #-}-{-# INLINE [1] neInt #-}-eqInt, neInt :: Int -> Int -> Bool-(I# x) `eqInt` (I# y) = isTrue# (x ==# y)-(I# x) `neInt` (I# y) = isTrue# (x /=# y)--#if WORD_SIZE_IN_BITS < 64-instance Eq TyCon where- (==) (TyCon hi1 lo1 _ _ _ _) (TyCon hi2 lo2 _ _ _ _)- = isTrue# (hi1 `eqWord64#` hi2) && isTrue# (lo1 `eqWord64#` lo2)-instance Ord TyCon where- compare (TyCon hi1 lo1 _ _ _ _) (TyCon hi2 lo2 _ _ _ _)- | isTrue# (hi1 `gtWord64#` hi2) = GT- | isTrue# (hi1 `ltWord64#` hi2) = LT- | isTrue# (lo1 `gtWord64#` lo2) = GT- | isTrue# (lo1 `ltWord64#` lo2) = LT- | True = EQ-#else-instance Eq TyCon where- (==) (TyCon hi1 lo1 _ _ _ _) (TyCon hi2 lo2 _ _ _ _)- = isTrue# (hi1 `eqWord#` hi2) && isTrue# (lo1 `eqWord#` lo2)-instance Ord TyCon where- compare (TyCon hi1 lo1 _ _ _ _) (TyCon hi2 lo2 _ _ _ _)- | isTrue# (hi1 `gtWord#` hi2) = GT- | isTrue# (hi1 `ltWord#` hi2) = LT- | isTrue# (lo1 `gtWord#` lo2) = GT- | isTrue# (lo1 `ltWord#` lo2) = LT- | True = EQ-#endif----- | The 'Ord' class is used for totally ordered datatypes.------ Instances of 'Ord' can be derived for any user-defined datatype whose--- constituent types are in 'Ord'. The declared order of the constructors in--- the data declaration determines the ordering in derived 'Ord' instances. The--- 'Ordering' datatype allows a single comparison to determine the precise--- ordering of two objects.------ 'Ord', as defined by the Haskell report, implements a total order and has the--- following properties:------ [__Comparability__]: @x <= y || y <= x@ = 'True'--- [__Transitivity__]: if @x <= y && y <= z@ = 'True', then @x <= z@ = 'True'--- [__Reflexivity__]: @x <= x@ = 'True'--- [__Antisymmetry__]: if @x <= y && y <= x@ = 'True', then @x == y@ = 'True'------ The following operator interactions are expected to hold:------ 1. @x >= y@ = @y <= x@--- 2. @x < y@ = @x <= y && x /= y@--- 3. @x > y@ = @y < x@--- 4. @x < y@ = @compare x y == LT@--- 5. @x > y@ = @compare x y == GT@--- 6. @x == y@ = @compare x y == EQ@--- 7. @min x y == if x <= y then x else y@ = 'True'--- 8. @max x y == if x >= y then x else y@ = 'True'------ Note that (7.) and (8.) do /not/ require 'min' and 'max' to return either of--- their arguments. The result is merely required to /equal/ one of the--- arguments in terms of '(==)'.------ Minimal complete definition: either 'compare' or '<='.--- Using 'compare' can be more efficient for complex types.----class (Eq a) => Ord a where- compare :: a -> a -> Ordering- (<), (<=), (>), (>=) :: a -> a -> Bool- max, min :: a -> a -> a-- compare x y = if x == y then EQ- -- NB: must be '<=' not '<' to validate the- -- above claim about the minimal things that- -- can be defined for an instance of Ord:- else if x <= y then LT- else GT-- x < y = case compare x y of { LT -> True; _ -> False }- x <= y = case compare x y of { GT -> False; _ -> True }- x > y = case compare x y of { GT -> True; _ -> False }- x >= y = case compare x y of { LT -> False; _ -> True }-- -- These two default methods use '<=' rather than 'compare'- -- because the latter is often more expensive- max x y = if x <= y then y else x- min x y = if x <= y then x else y- {-# MINIMAL compare | (<=) #-}--deriving instance Ord ()-deriving instance Ord a => Ord (Solo a)-deriving instance (Ord a, Ord b) => Ord (a, b)-deriving instance (Ord a, Ord b, Ord c) => Ord (a, b, c)-deriving instance (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f)- => Ord (a, b, c, d, e, f)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g)- => Ord (a, b, c, d, e, f, g)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h)- => Ord (a, b, c, d, e, f, g, h)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i)- => Ord (a, b, c, d, e, f, g, h, i)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i, Ord j)- => Ord (a, b, c, d, e, f, g, h, i, j)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i, Ord j, Ord k)- => Ord (a, b, c, d, e, f, g, h, i, j, k)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i, Ord j, Ord k, Ord l)- => Ord (a, b, c, d, e, f, g, h, i, j, k, l)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i, Ord j, Ord k, Ord l, Ord m)- => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n)- => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)-deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,- Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o)- => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)--instance (Ord a) => Ord [a] where- {-# SPECIALISE instance Ord [[Char]] #-}- {-# SPECIALISE instance Ord [Char] #-}- {-# SPECIALISE instance Ord [Int] #-}- compare [] [] = EQ- compare [] (_:_) = LT- compare (_:_) [] = GT- compare (x:xs) (y:ys) = case compare x y of- EQ -> compare xs ys- other -> other--deriving instance Ord Bool-deriving instance Ord Ordering---- We don't use deriving for Ord Char, because for Ord the derived--- instance defines only compare, which takes two primops. Then--- '>' uses compare, and therefore takes two primops instead of one.-instance Ord Char where- (C# c1) > (C# c2) = isTrue# (c1 `gtChar#` c2)- (C# c1) >= (C# c2) = isTrue# (c1 `geChar#` c2)- (C# c1) <= (C# c2) = isTrue# (c1 `leChar#` c2)- (C# c1) < (C# c2) = isTrue# (c1 `ltChar#` c2)---- | Note that due to the presence of @NaN@, `Float`'s 'Ord' instance does not--- satisfy reflexivity.------ >>> 0/0 <= (0/0 :: Float)--- False------ Also note that, due to the same, `Ord`'s operator interactions are not--- respected by `Float`'s instance:------ >>> (0/0 :: Float) > 1--- False--- >>> compare (0/0 :: Float) 1--- GT-instance Ord Float where- (F# x) `compare` (F# y)- = if isTrue# (x `ltFloat#` y) then LT- else if isTrue# (x `eqFloat#` y) then EQ- else GT-- (F# x) < (F# y) = isTrue# (x `ltFloat#` y)- (F# x) <= (F# y) = isTrue# (x `leFloat#` y)- (F# x) >= (F# y) = isTrue# (x `geFloat#` y)- (F# x) > (F# y) = isTrue# (x `gtFloat#` y)---- | Note that due to the presence of @NaN@, `Double`'s 'Ord' instance does not--- satisfy reflexivity.------ >>> 0/0 <= (0/0 :: Double)--- False------ Also note that, due to the same, `Ord`'s operator interactions are not--- respected by `Double`'s instance:------ >>> (0/0 :: Double) > 1--- False--- >>> compare (0/0 :: Double) 1--- GT-instance Ord Double where- (D# x) `compare` (D# y)- = if isTrue# (x <## y) then LT- else if isTrue# (x ==## y) then EQ- else GT-- (D# x) < (D# y) = isTrue# (x <## y)- (D# x) <= (D# y) = isTrue# (x <=## y)- (D# x) >= (D# y) = isTrue# (x >=## y)- (D# x) > (D# y) = isTrue# (x >## y)--instance Ord Int where- compare = compareInt- (<) = ltInt- (<=) = leInt- (>=) = geInt- (>) = gtInt---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] gtInt #-}-{-# INLINE [1] geInt #-}-{-# INLINE [1] ltInt #-}-{-# INLINE [1] leInt #-}-gtInt, geInt, ltInt, leInt :: Int -> Int -> Bool-(I# x) `gtInt` (I# y) = isTrue# (x ># y)-(I# x) `geInt` (I# y) = isTrue# (x >=# y)-(I# x) `ltInt` (I# y) = isTrue# (x <# y)-(I# x) `leInt` (I# y) = isTrue# (x <=# y)--compareInt :: Int -> Int -> Ordering-(I# x#) `compareInt` (I# y#) = compareInt# x# y#--compareInt# :: Int# -> Int# -> Ordering-compareInt# x# y#- | isTrue# (x# <# y#) = LT- | isTrue# (x# ==# y#) = EQ- | True = GT--instance Ord Word where- compare = compareWord- (<) = ltWord- (<=) = leWord- (>=) = geWord- (>) = gtWord---- See GHC.Classes#matching_overloaded_methods_in_rules-{-# INLINE [1] gtWord #-}-{-# INLINE [1] geWord #-}-{-# INLINE [1] ltWord #-}-{-# INLINE [1] leWord #-}-gtWord, geWord, ltWord, leWord :: Word -> Word -> Bool-(W# x) `gtWord` (W# y) = isTrue# (x `gtWord#` y)-(W# x) `geWord` (W# y) = isTrue# (x `geWord#` y)-(W# x) `ltWord` (W# y) = isTrue# (x `ltWord#` y)-(W# x) `leWord` (W# y) = isTrue# (x `leWord#` y)--compareWord :: Word -> Word -> Ordering-(W# x#) `compareWord` (W# y#) = compareWord# x# y#--compareWord# :: Word# -> Word# -> Ordering-compareWord# x# y#- | isTrue# (x# `ltWord#` y#) = LT- | isTrue# (x# `eqWord#` y#) = EQ- | True = GT---- OK, so they're technically not part of a class...:---- Boolean functions---- | Boolean \"and\", lazy in the second argument-(&&) :: Bool -> Bool -> Bool-True && x = x-False && _ = False---- | Boolean \"or\", lazy in the second argument-(||) :: Bool -> Bool -> Bool-True || _ = True-False || x = x---- | Boolean \"not\"-not :: Bool -> Bool-not True = False-not False = True------------------------------------------------------------------------------ These don't really belong here, but we don't have a better place to--- put them---- These functions have built-in rules.-{-# NOINLINE [0] divInt# #-}-{-# NOINLINE [0] modInt# #-}-divInt# :: Int# -> Int# -> Int#-x# `divInt#` y#- -- Be careful NOT to overflow if we do any additional arithmetic- -- on the arguments... the following previous version of this- -- code has problems with overflow:--- | (x# ># 0#) && (y# <# 0#) = ((x# -# y#) -# 1#) `quotInt#` y#--- | (x# <# 0#) && (y# ># 0#) = ((x# -# y#) +# 1#) `quotInt#` y#- = if isTrue# (x# ># 0#) && isTrue# (y# <# 0#) then ((x# -# 1#) `quotInt#` y#) -# 1#- else if isTrue# (x# <# 0#) && isTrue# (y# ># 0#) then ((x# +# 1#) `quotInt#` y#) -# 1#- else x# `quotInt#` y#--modInt# :: Int# -> Int# -> Int#-x# `modInt#` y#- = if isTrue# (x# ># 0#) && isTrue# (y# <# 0#) ||- isTrue# (x# <# 0#) && isTrue# (y# ># 0#)- then if isTrue# (r# /=# 0#) then r# +# y# else 0#- else r#- where- !r# = x# `remInt#` y#---{- *************************************************************-* *-* Constraint tuples *-* *-************************************************************* -}--class ()-class (c1, c2) => (c1, c2)-class (c1, c2, c3) => (c1, c2, c3)-class (c1, c2, c3, c4) => (c1, c2, c3, c4)-class (c1, c2, c3, c4, c5) => (c1, c2, c3, c4, c5)-class (c1, c2, c3, c4, c5, c6) => (c1, c2, c3, c4, c5, c6)-class (c1, c2, c3, c4, c5, c6, c7) => (c1, c2, c3, c4, c5, c6, c7)-class (c1, c2, c3, c4, c5, c6, c7, c8) => (c1, c2, c3, c4, c5, c6, c7, c8)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17,c18)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61, c62)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61, c62)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61, c62, c63)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61, c62, c63)-class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61, c62, c63, c64)- => (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,- c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,- c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,- c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,- c59, c60, c61, c62, c63, c64)+{-# LANGUAGE Trustworthy #-}+{-# LANGUAGE NoImplicitPrelude, MagicHash, StandaloneDeriving, BangPatterns,+ KindSignatures, DataKinds, ConstraintKinds,+ MultiParamTypeClasses, FunctionalDependencies #-}+{-# LANGUAGE UnboxedTuples #-}+{-# LANGUAGE AllowAmbiguousTypes #-}+ -- ip :: IP x a => a is strictly speaking ambiguous, but IP is magic+{-# LANGUAGE UndecidableSuperClasses #-}+ -- Because of the type-variable superclasses for tuples++{-# OPTIONS_GHC -Wno-unused-imports #-}+-- -Wno-unused-imports needed for the GHC.Tuple import below. Sigh.++{-# OPTIONS_GHC -Wno-unused-top-binds #-}+-- -Wno-unused-top-binds is there (I hope) to stop Haddock complaining+-- about the constraint tuples being defined but not used++{-# LANGUAGE FlexibleInstances #-}+{-# LANGUAGE UndecidableSuperClasses #-}+{-# LANGUAGE ConstraintKinds #-}++{-# OPTIONS_HADDOCK not-home #-}+-----------------------------------------------------------------------------+-- |+-- Module : GHC.Classes+-- Copyright : (c) The University of Glasgow, 1992-2002+-- License : see libraries/base/LICENSE+--+-- Maintainer : ghc-devs@haskell.org+-- Stability : internal+-- Portability : non-portable (GHC extensions)+--+-- Basic classes.+-- Do not import this module directly. It is an GHC internal only+-- module. Some of its contents are instead available from @Prelude@+-- and @GHC.Int@.+--+-----------------------------------------------------------------------------++module GHC.Classes(+ -- * Implicit parameters+ IP(..),++ -- * Equality and ordering+ -- | Do not import these classes from this module. Import them+ -- from @Prelude@ instead.+ Eq(..),+ Ord(..),+ -- ** Monomorphic equality operators+ -- $matching_overloaded_methods_in_rules+ eqInt, neInt,+ eqWord, neWord,+ eqChar, neChar,+ eqFloat, eqDouble,+ -- ** Monomorphic comparison operators+ gtInt, geInt, leInt, ltInt, compareInt, compareInt#,+ gtWord, geWord, leWord, ltWord, compareWord, compareWord#,++ -- * Functions over Bool+ -- | Do not import these functions from this module. Import them+ -- from @Prelude@ instead.+ (&&), (||), not,++ -- * Integer arithmetic+ divInt#, divInt8#, divInt16#, divInt32#,+ modInt#, modInt8#, modInt16#, modInt32#,+ divModInt#, divModInt8#, divModInt16#, divModInt32#,++ -- * Constraint tuples+ CUnit,+ CSolo,+ CTuple0,+ CTuple1,+ CTuple2,+ CTuple3,+ CTuple4,+ CTuple5,+ CTuple6,+ CTuple7,+ CTuple8,+ CTuple9,+ CTuple10,+ CTuple11,+ CTuple12,+ CTuple13,+ CTuple14,+ CTuple15,+ CTuple16,+ CTuple17,+ CTuple18,+ CTuple19,+ CTuple20,+ CTuple21,+ CTuple22,+ CTuple23,+ CTuple24,+ CTuple25,+ CTuple26,+ CTuple27,+ CTuple28,+ CTuple29,+ CTuple30,+ CTuple31,+ CTuple32,+ CTuple33,+ CTuple34,+ CTuple35,+ CTuple36,+ CTuple37,+ CTuple38,+ CTuple39,+ CTuple40,+ CTuple41,+ CTuple42,+ CTuple43,+ CTuple44,+ CTuple45,+ CTuple46,+ CTuple47,+ CTuple48,+ CTuple49,+ CTuple50,+ CTuple51,+ CTuple52,+ CTuple53,+ CTuple54,+ CTuple55,+ CTuple56,+ CTuple57,+ CTuple58,+ CTuple59,+ CTuple60,+ CTuple61,+ CTuple62,+ CTuple63,+ CTuple64,+ ) where++-- GHC.Magic is used in some derived instances+import GHC.Magic ()+import GHC.Prim+import GHC.Tuple+import GHC.CString (unpackCString#)+import GHC.Types++infix 4 ==, /=, <, <=, >=, >+infixr 3 &&+infixr 2 ||++default () -- Double isn't available yet++-- | The syntax @?x :: a@ is desugared into @IP "x" a@+-- IP is declared very early, so that libraries can take+-- advantage of the implicit-call-stack feature+class IP (x :: Symbol) a | x -> a where+ ip :: a++{- $matching_overloaded_methods_in_rules++Matching on class methods (e.g. @(==)@) in rewrite rules tends to be a bit+fragile. For instance, consider this motivating example from the @bytestring@+library,++@+break :: (Word8 -> Bool) -> ByteString -> (ByteString, ByteString)+breakByte :: Word8 -> ByteString -> (ByteString, ByteString)+\{\-\# RULES "break -> breakByte" forall a. break (== x) = breakByte x \#\-\}+@++Here we have two functions, with @breakByte@ providing an optimized+implementation of @break@ where the predicate is merely testing for equality+with a known @Word8@. As written, however, this rule will be quite fragile as+the @(==)@ class operation rule may rewrite the predicate before our @break@+rule has a chance to fire.++For this reason, most of the primitive types in @base@ have 'Eq' and 'Ord'+instances defined in terms of helper functions with inlinings delayed to phase+1. For instance, @Word8@\'s @Eq@ instance looks like,++@+instance Eq Word8 where+ (==) = eqWord8+ (/=) = neWord8++eqWord8, neWord8 :: Word8 -> Word8 -> Bool+eqWord8 (W8# x) (W8# y) = ...+neWord8 (W8# x) (W8# y) = ...+\{\-\# INLINE [1] eqWord8 \#\-\}+\{\-\# INLINE [1] neWord8 \#\-\}+@++This allows us to save our @break@ rule above by rewriting it to instead match+against @eqWord8@,++@+\{\-\# RULES "break -> breakByte" forall a. break (`eqWord8` x) = breakByte x \#\-\}+@++Currently this is only done for @('==')@, @('/=')@, @('<')@, @('<=')@, @('>')@,+and @('>=')@ for the types in "GHC.Word" and "GHC.Int".+-}++-- | The 'Eq' class defines equality ('==') and inequality ('/=').+-- All the basic datatypes exported by the "Prelude" are instances of 'Eq',+-- and 'Eq' may be derived for any datatype whose constituents are also+-- instances of 'Eq'.+--+-- The Haskell Report defines no laws for 'Eq'. However, instances are+-- encouraged to follow these properties:+--+-- [__Reflexivity__]: @x == x@ = 'True'+-- [__Symmetry__]: @x == y@ = @y == x@+-- [__Transitivity__]: if @x == y && y == z@ = 'True', then @x == z@ = 'True'+-- [__Extensionality__]: if @x == y@ = 'True' and @f@ is a function+-- whose return type is an instance of 'Eq', then @f x == f y@ = 'True'+-- [__Negation__]: @x /= y@ = @not (x == y)@+class Eq a where+ (==), (/=) :: a -> a -> Bool++ {-# INLINE (/=) #-}+ {-# INLINE (==) #-}+ x /= y = not (x == y)+ x == y = not (x /= y)+ {-# MINIMAL (==) | (/=) #-}++deriving instance Eq ()+deriving instance Eq a => Eq (Solo a)+deriving instance (Eq a, Eq b) => Eq (a, b)+deriving instance (Eq a, Eq b, Eq c) => Eq (a, b, c)+deriving instance (Eq a, Eq b, Eq c, Eq d) => Eq (a, b, c, d)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e) => Eq (a, b, c, d, e)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f)+ => Eq (a, b, c, d, e, f)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g)+ => Eq (a, b, c, d, e, f, g)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h)+ => Eq (a, b, c, d, e, f, g, h)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i)+ => Eq (a, b, c, d, e, f, g, h, i)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i, Eq j)+ => Eq (a, b, c, d, e, f, g, h, i, j)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i, Eq j, Eq k)+ => Eq (a, b, c, d, e, f, g, h, i, j, k)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i, Eq j, Eq k, Eq l)+ => Eq (a, b, c, d, e, f, g, h, i, j, k, l)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i, Eq j, Eq k, Eq l, Eq m)+ => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n)+ => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n)+deriving instance (Eq a, Eq b, Eq c, Eq d, Eq e, Eq f, Eq g,+ Eq h, Eq i, Eq j, Eq k, Eq l, Eq m, Eq n, Eq o)+ => Eq (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)++instance (Eq a) => Eq [a] where+ {-# SPECIALISE instance Eq [[Char]] #-}+ {-# SPECIALISE instance Eq [Char] #-}+ {-# SPECIALISE instance Eq [Int] #-}+ [] == [] = True+ (x:xs) == (y:ys) = x == y && xs == ys+ _xs == _ys = False++deriving instance Eq Module++instance Eq TrName where+ TrNameS a == TrNameS b = isTrue# (a `eqAddr#` b)+ a == b = toString a == toString b+ where+ toString (TrNameS s) = unpackCString# s+ toString (TrNameD s) = s++deriving instance Eq Bool+deriving instance Eq Ordering++instance Eq Word where+ (==) = eqWord+ (/=) = neWord++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] eqWord #-}+{-# INLINE [1] neWord #-}+eqWord, neWord :: Word -> Word -> Bool+(W# x) `eqWord` (W# y) = isTrue# (x `eqWord#` y)+(W# x) `neWord` (W# y) = isTrue# (x `neWord#` y)++-- See GHC.Classes#matching_overloaded_methods_in_rules+instance Eq Char where+ (==) = eqChar+ (/=) = neChar++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] eqChar #-}+{-# INLINE [1] neChar #-}+eqChar, neChar :: Char -> Char -> Bool+(C# x) `eqChar` (C# y) = isTrue# (x `eqChar#` y)+(C# x) `neChar` (C# y) = isTrue# (x `neChar#` y)++-- | Note that due to the presence of @NaN@, `Float`'s 'Eq' instance does not+-- satisfy reflexivity.+--+-- >>> 0/0 == (0/0 :: Float)+-- False+--+-- Also note that `Float`'s 'Eq' instance does not satisfy extensionality:+--+-- >>> 0 == (-0 :: Float)+-- True+-- >>> recip 0 == recip (-0 :: Float)+-- False+instance Eq Float where+ (==) = eqFloat++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] eqFloat #-}+eqFloat :: Float -> Float -> Bool+(F# x) `eqFloat` (F# y) = isTrue# (x `eqFloat#` y)++-- | Note that due to the presence of @NaN@, `Double`'s 'Eq' instance does not+-- satisfy reflexivity.+--+-- >>> 0/0 == (0/0 :: Double)+-- False+--+-- Also note that `Double`'s 'Eq' instance does not satisfy substitutivity:+--+-- >>> 0 == (-0 :: Double)+-- True+-- >>> recip 0 == recip (-0 :: Double)+-- False+instance Eq Double where+ (==) = eqDouble++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] eqDouble #-}+eqDouble :: Double -> Double -> Bool+(D# x) `eqDouble` (D# y) = isTrue# (x ==## y)++instance Eq Int where+ (==) = eqInt+ (/=) = neInt++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] eqInt #-}+{-# INLINE [1] neInt #-}+eqInt, neInt :: Int -> Int -> Bool+(I# x) `eqInt` (I# y) = isTrue# (x ==# y)+(I# x) `neInt` (I# y) = isTrue# (x /=# y)++instance Eq TyCon where+ (==) (TyCon hi1 lo1 _ _ _ _) (TyCon hi2 lo2 _ _ _ _)+ = isTrue# (hi1 `eqWord64#` hi2) && isTrue# (lo1 `eqWord64#` lo2)+instance Ord TyCon where+ compare (TyCon hi1 lo1 _ _ _ _) (TyCon hi2 lo2 _ _ _ _)+ | isTrue# (hi1 `gtWord64#` hi2) = GT+ | isTrue# (hi1 `ltWord64#` hi2) = LT+ | isTrue# (lo1 `gtWord64#` lo2) = GT+ | isTrue# (lo1 `ltWord64#` lo2) = LT+ | True = EQ+++-- | The 'Ord' class is used for totally ordered datatypes.+--+-- Instances of 'Ord' can be derived for any user-defined datatype whose+-- constituent types are in 'Ord'. The declared order of the constructors in+-- the data declaration determines the ordering in derived 'Ord' instances. The+-- 'Ordering' datatype allows a single comparison to determine the precise+-- ordering of two objects.+--+-- 'Ord', as defined by the Haskell report, implements a total order and has the+-- following properties:+--+-- [__Comparability__]: @x <= y || y <= x@ = 'True'+-- [__Transitivity__]: if @x <= y && y <= z@ = 'True', then @x <= z@ = 'True'+-- [__Reflexivity__]: @x <= x@ = 'True'+-- [__Antisymmetry__]: if @x <= y && y <= x@ = 'True', then @x == y@ = 'True'+--+-- The following operator interactions are expected to hold:+--+-- 1. @x >= y@ = @y <= x@+-- 2. @x < y@ = @x <= y && x /= y@+-- 3. @x > y@ = @y < x@+-- 4. @x < y@ = @compare x y == LT@+-- 5. @x > y@ = @compare x y == GT@+-- 6. @x == y@ = @compare x y == EQ@+-- 7. @min x y == if x <= y then x else y@ = 'True'+-- 8. @max x y == if x >= y then x else y@ = 'True'+--+-- Note that (7.) and (8.) do /not/ require 'min' and 'max' to return either of+-- their arguments. The result is merely required to /equal/ one of the+-- arguments in terms of '(==)'. Users who expect a stronger guarantee are advised+-- to write their own min and/or max functions.+--+-- The nuance of the above distinction is not always fully internalized by+-- developers, and in the past (tracing back to the Haskell 1.4 Report) the+-- specification for 'Ord' asserted the stronger property that @(min x y, max x+-- y) = (x, y)@ or @(y, x)@, or in other words, that 'min' and 'max' /will/+-- return one of their arguments, using argument order as the tie-breaker if+-- the arguments are equal by comparison. A few list and+-- 'Data.Foldable.Foldable' functions have behavior that is best understood+-- with this assumption in mind: all variations of @minimumBy@ and @maximumBy@+-- (which can't use 'min' and 'max' in their implementations) are written such+-- that @minimumBy 'compare'@ and @maximumBy 'compare'@ are respectively+-- equivalent to @minimum@ and @maximum@ (which do use 'min' and 'max') only if+-- 'min' and 'max' adhere to this tie-breaking convention. Otherwise, if there+-- are multiple least or largest elements in a container, @minimum@ and+-- @maximum@ may not return the /same/ one that @minimumBy 'compare'@ and+-- @maximumBy 'compare'@ do (though they should return something that is+-- /equal/). (This is relevant for types with non-extensional equality, like+-- 'Data.Semigroup.Arg', but also in cases where the precise reference held+-- matters for memory-management reasons.) Unless there is a reason to deviate,+-- it is less confusing for implementors of 'Ord' to respect this same+-- convention (as the default definitions of 'min' and 'max' do).+--+-- Minimal complete definition: either 'compare' or '<='.+-- Using 'compare' can be more efficient for complex types.+--+class (Eq a) => Ord a where+ compare :: a -> a -> Ordering+ (<), (<=), (>), (>=) :: a -> a -> Bool+ max, min :: a -> a -> a++ compare x y = if x == y then EQ+ -- NB: must be '<=' not '<' to validate the+ -- above claim about the minimal things that+ -- can be defined for an instance of Ord:+ else if x <= y then LT+ else GT++ x <= y = case compare x y of { GT -> False; _ -> True }+ x >= y = y <= x+ x > y = not (x <= y)+ x < y = not (y <= x)+++ -- These two default methods use '<=' rather than 'compare'+ -- because the latter is often more expensive+ max x y = if x <= y then y else x+ min x y = if x <= y then x else y+ {-# MINIMAL compare | (<=) #-}++deriving instance Ord ()+deriving instance Ord a => Ord (Solo a)+deriving instance (Ord a, Ord b) => Ord (a, b)+deriving instance (Ord a, Ord b, Ord c) => Ord (a, b, c)+deriving instance (Ord a, Ord b, Ord c, Ord d) => Ord (a, b, c, d)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e) => Ord (a, b, c, d, e)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f)+ => Ord (a, b, c, d, e, f)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g)+ => Ord (a, b, c, d, e, f, g)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h)+ => Ord (a, b, c, d, e, f, g, h)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i)+ => Ord (a, b, c, d, e, f, g, h, i)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i, Ord j)+ => Ord (a, b, c, d, e, f, g, h, i, j)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i, Ord j, Ord k)+ => Ord (a, b, c, d, e, f, g, h, i, j, k)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i, Ord j, Ord k, Ord l)+ => Ord (a, b, c, d, e, f, g, h, i, j, k, l)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i, Ord j, Ord k, Ord l, Ord m)+ => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n)+ => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n)+deriving instance (Ord a, Ord b, Ord c, Ord d, Ord e, Ord f, Ord g,+ Ord h, Ord i, Ord j, Ord k, Ord l, Ord m, Ord n, Ord o)+ => Ord (a, b, c, d, e, f, g, h, i, j, k, l, m, n, o)++instance (Ord a) => Ord [a] where+ {-# SPECIALISE instance Ord [[Char]] #-}+ {-# SPECIALISE instance Ord [Char] #-}+ {-# SPECIALISE instance Ord [Int] #-}+ compare [] [] = EQ+ compare [] (_:_) = LT+ compare (_:_) [] = GT+ compare (x:xs) (y:ys) = case compare x y of+ EQ -> compare xs ys+ other -> other++deriving instance Ord Bool+deriving instance Ord Ordering++-- We don't use deriving for Ord Char, because for Ord the derived+-- instance defines only compare, which takes two primops. Then+-- '>' uses compare, and therefore takes two primops instead of one.+instance Ord Char where+ (C# c1) > (C# c2) = isTrue# (c1 `gtChar#` c2)+ (C# c1) >= (C# c2) = isTrue# (c1 `geChar#` c2)+ (C# c1) <= (C# c2) = isTrue# (c1 `leChar#` c2)+ (C# c1) < (C# c2) = isTrue# (c1 `ltChar#` c2)++-- | See @instance@ 'Ord' 'Double' for discussion of deviations from IEEE 754 standard.+instance Ord Float where+ (F# x) `compare` (F# y)+ = if isTrue# (x `ltFloat#` y) then LT+ else if isTrue# (x `eqFloat#` y) then EQ+ else GT++ (F# x) < (F# y) = isTrue# (x `ltFloat#` y)+ (F# x) <= (F# y) = isTrue# (x `leFloat#` y)+ (F# x) >= (F# y) = isTrue# (x `geFloat#` y)+ (F# x) > (F# y) = isTrue# (x `gtFloat#` y)++-- | IEEE 754 'Double'-precision type includes not only numbers, but also+-- positive and negative infinities and a special element called @NaN@+-- (which can be quiet or signal).+--+-- IEEE 754-2008, section 5.11 requires that if at least one of arguments of+-- '<=', '<', '>', '>=' is @NaN@ then the result of the comparison is 'False',+-- and @instance@ 'Ord' 'Double' complies with this requirement. This violates+-- the reflexivity: both @NaN@ '<=' @NaN@ and @NaN@ '>=' @NaN@ are 'False'.+--+-- IEEE 754-2008, section 5.10 defines @totalOrder@ predicate. Unfortunately,+-- 'compare' on 'Double's violates the IEEE standard and does not define a total order.+-- More specifically, both 'compare' @NaN@ @x@ and 'compare' @x@ @NaN@ always return 'GT'.+--+-- Thus, users must be extremely cautious when using @instance@ 'Ord' 'Double'.+-- For instance, one should avoid ordered containers with keys represented by 'Double',+-- because data loss and corruption may happen. An IEEE-compliant 'compare' is available+-- in @fp-ieee@ package as @TotallyOrdered@ newtype.+--+-- Moving further, the behaviour of 'min' and 'max' with regards to @NaN@ is+-- also non-compliant. IEEE 754-2008, section 5.3.1 defines that quiet @NaN@+-- should be treated as a missing data by @minNum@ and @maxNum@ functions,+-- for example, @minNum(NaN, 1) = minNum(1, NaN) = 1@. Some languages such as Java+-- deviate from the standard implementing @minNum(NaN, 1) = minNum(1, NaN) = NaN@.+-- However, 'min' / 'max' in @base@ are even worse: 'min' @NaN@ 1 is 1, but 'min' 1 @NaN@+-- is @NaN@.+--+-- IEEE 754-2008 compliant 'min' / 'max' can be found in @ieee754@ package under+-- @minNum@ / @maxNum@ names. Implementations compliant with+-- @minimumNumber@ / @maximumNumber@ from a newer+-- [IEEE 754-2019](https://grouper.ieee.org/groups/msc/ANSI_IEEE-Std-754-2019/background/),+-- section 9.6 are available from @fp-ieee@ package.+--+instance Ord Double where+ (D# x) `compare` (D# y)+ = if isTrue# (x <## y) then LT+ else if isTrue# (x ==## y) then EQ+ else GT++ (D# x) < (D# y) = isTrue# (x <## y)+ (D# x) <= (D# y) = isTrue# (x <=## y)+ (D# x) >= (D# y) = isTrue# (x >=## y)+ (D# x) > (D# y) = isTrue# (x >## y)++instance Ord Int where+ compare = compareInt+ (<) = ltInt+ (<=) = leInt+ (>=) = geInt+ (>) = gtInt++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] gtInt #-}+{-# INLINE [1] geInt #-}+{-# INLINE [1] ltInt #-}+{-# INLINE [1] leInt #-}+gtInt, geInt, ltInt, leInt :: Int -> Int -> Bool+(I# x) `gtInt` (I# y) = isTrue# (x ># y)+(I# x) `geInt` (I# y) = isTrue# (x >=# y)+(I# x) `ltInt` (I# y) = isTrue# (x <# y)+(I# x) `leInt` (I# y) = isTrue# (x <=# y)++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] compareInt #-}+compareInt :: Int -> Int -> Ordering+(I# x#) `compareInt` (I# y#) = compareInt# x# y#++compareInt# :: Int# -> Int# -> Ordering+compareInt# x# y#+ | isTrue# (x# <# y#) = LT+ | isTrue# (x# ==# y#) = EQ+ | True = GT++instance Ord Word where+ compare = compareWord+ (<) = ltWord+ (<=) = leWord+ (>=) = geWord+ (>) = gtWord++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] gtWord #-}+{-# INLINE [1] geWord #-}+{-# INLINE [1] ltWord #-}+{-# INLINE [1] leWord #-}+gtWord, geWord, ltWord, leWord :: Word -> Word -> Bool+(W# x) `gtWord` (W# y) = isTrue# (x `gtWord#` y)+(W# x) `geWord` (W# y) = isTrue# (x `geWord#` y)+(W# x) `ltWord` (W# y) = isTrue# (x `ltWord#` y)+(W# x) `leWord` (W# y) = isTrue# (x `leWord#` y)++-- See GHC.Classes#matching_overloaded_methods_in_rules+{-# INLINE [1] compareWord #-}+compareWord :: Word -> Word -> Ordering+(W# x#) `compareWord` (W# y#) = compareWord# x# y#++compareWord# :: Word# -> Word# -> Ordering+compareWord# x# y#+ | isTrue# (x# `ltWord#` y#) = LT+ | isTrue# (x# `eqWord#` y#) = EQ+ | True = GT++-- OK, so they're technically not part of a class...:++-- Boolean functions++-- | Boolean \"and\", lazy in the second argument+(&&) :: Bool -> Bool -> Bool+True && x = x+False && _ = False++-- | Boolean \"or\", lazy in the second argument+(||) :: Bool -> Bool -> Bool+True || _ = True+False || x = x++-- | Boolean \"not\"+not :: Bool -> Bool+not True = False+not False = True+++------------------------------------------------------------------------+-- These don't really belong here, but we don't have a better place to+-- put them++-- These functions have built-in rules.+{-# INLINE [0] divInt# #-}+divInt# :: Int# -> Int# -> Int#+x# `divInt#` y# = ((x# +# bias#) `quotInt#` y#) -# hard#+ where+ -- See Note [divInt# implementation]+ !yn# = y# <# 0#+ !c0# = (x# <# 0#) `andI#` (notI# yn#)+ !c1# = (x# ># 0#) `andI#` yn#+ !bias# = c0# -# c1#+ !hard# = c0# `orI#` c1#++{-# INLINE [0] divInt8# #-}+divInt8# :: Int8# -> Int8# -> Int8#+x# `divInt8#` y# = ((x# `plusInt8#` bias#) `quotInt8#` y#) `subInt8#` hard#+ where+ zero# = intToInt8# 0#+ x `andInt8#` y = word8ToInt8# (int8ToWord8# x `andWord8#` int8ToWord8# y)+ x `orInt8#` y = word8ToInt8# (int8ToWord8# x `orWord8#` int8ToWord8# y)+ notInt8# x = word8ToInt8# (notWord8# (int8ToWord8# x))+ -- See Note [divInt# implementation]+ !yn# = intToInt8# (y# `ltInt8#` zero#)+ !c0# = intToInt8# (x# `ltInt8#` zero#) `andInt8#` (notInt8# yn#)+ !c1# = intToInt8# (x# `gtInt8#` zero#) `andInt8#` yn#+ !bias# = c0# `subInt8#` c1#+ !hard# = c0# `orInt8#` c1#++{-# INLINE [0] divInt16# #-}+divInt16# :: Int16# -> Int16# -> Int16#+x# `divInt16#` y# = ((x# `plusInt16#` bias#) `quotInt16#` y#) `subInt16#` hard#+ where+ zero# = intToInt16# 0#+ x `andInt16#` y = word16ToInt16# (int16ToWord16# x `andWord16#` int16ToWord16# y)+ x `orInt16#` y = word16ToInt16# (int16ToWord16# x `orWord16#` int16ToWord16# y)+ notInt16# x = word16ToInt16# (notWord16# (int16ToWord16# x))+ -- See Note [divInt# implementation]+ !yn# = intToInt16# (y# `ltInt16#` zero#)+ !c0# = intToInt16# (x# `ltInt16#` zero#) `andInt16#` (notInt16# yn#)+ !c1# = intToInt16# (x# `gtInt16#` zero#) `andInt16#` yn#+ !bias# = c0# `subInt16#` c1#+ !hard# = c0# `orInt16#` c1#++{-# INLINE [0] divInt32# #-}+divInt32# :: Int32# -> Int32# -> Int32#+x# `divInt32#` y# = ((x# `plusInt32#` bias#) `quotInt32#` y#) `subInt32#` hard#+ where+ zero# = intToInt32# 0#+ x `andInt32#` y = word32ToInt32# (int32ToWord32# x `andWord32#` int32ToWord32# y)+ x `orInt32#` y = word32ToInt32# (int32ToWord32# x `orWord32#` int32ToWord32# y)+ notInt32# x = word32ToInt32# (notWord32# (int32ToWord32# x))+ -- See Note [divInt# implementation]+ !yn# = intToInt32# (y# `ltInt32#` zero#)+ !c0# = intToInt32# (x# `ltInt32#` zero#) `andInt32#` (notInt32# yn#)+ !c1# = intToInt32# (x# `gtInt32#` zero#) `andInt32#` yn#+ !bias# = c0# `subInt32#` c1#+ !hard# = c0# `orInt32#` c1#++-- Note [divInt# implementation]+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+-- divInt# (truncated toward zero) is implemented with quotInt# (truncated+-- toward negative infinity). They differ when inputs x and y have different signs:+-- - x `rem` y has the sign of x and (x `quot` y)*y + (x `rem` y) == x+-- - x `mod` y has the sign of y and (x `div` y)*y + (x `mod` y) == x+--+-- So we bias the input and the result of quotInt as follows:+--+-- if isTrue# (x# ># 0#) && isTrue# (y# <# 0#) then ((x# -# 1#) `quotInt#` y#) -# 1#+-- else if isTrue# (x# <# 0#) && isTrue# (y# ># 0#) then ((x# +# 1#) `quotInt#` y#) -# 1#+-- else x# `quotInt#` y#+--+-- However this leads to assembly code with lots of branches (#19636) while we+-- would like simpler code that we could inline (#18067). So we use some+-- branchless code instead as derived below:+--+-- if isTrue# (x# ># 0#) && isTrue# (y# <# 0#) then ((x# -# 1#) `quotInt#` y#) -# 1#+-- else if isTrue# (x# <# 0#) && isTrue# (y# ># 0#) then ((x# +# 1#) `quotInt#` y#) -# 1#+-- else x# `quotInt#` y#+--+-- ===> { Give names to constants and always use them }+--+-- ((x# +# bias#) `quotInt#` y#) -# hard#+-- where+-- (bias#,hard#)+-- | isTrue# (x# ># 0#) && isTrue# (y# <# 0#) = (-1#, 1#)+-- | isTrue# (x# <# 0#) && isTrue# (y# ># 0#) = ( 1#, 1#)+-- | otherwise = ( 0#, 0#)+--+-- ===> { Compute bias# and hard# independently using Bool# (0#,1#) }+--+-- ((x# +# bias#) `quotInt#` y#) -# hard#+-- where+-- c0# = (x# <# 0#) &&# (y# ># 0#)+-- c1# = (x# ># 0#) &&# (y# <# 0#)+-- bias# = c0# -# c1# -- both cases are mutually exclusive so we can subtract them+-- hard# = c0# ||# c1# -- (we could add them too here but OR is slightly better)+--+-- ===> { Use yn# variable for "y# <# 0#" }+--+-- ((x# +# bias#) `quotInt#` y#) -# hard#+-- where+-- -- y# ==# 0# throws an exception so we don't need to consider it+-- yn# = y# <# 0#+-- c0# = (x# <# 0#) &&# (notI# yn#)+-- c1# = (x# ># 0#) &&# yn#+-- bias# = c0# -# c1#+-- hard# = c0# ||# c1#+--+--+-- Note that we need to be careful NOT to overflow if we do any additional+-- arithmetic on the arguments... the following previous version of this code+-- had problems with overflow:+-- | (x# ># 0#) && (y# <# 0#) = ((x# -# y#) -# 1#) `quotInt#` y#+-- | (x# <# 0#) && (y# ># 0#) = ((x# -# y#) +# 1#) `quotInt#` y#++{-# INLINE [0] modInt# #-}+modInt# :: Int# -> Int# -> Int#+x# `modInt#` y# = r# +# k#+ where+ -- See Note [modInt# implementation]+ !yn# = y# <# 0#+ !c0# = (x# <# 0#) `andI#` (notI# yn#)+ !c1# = (x# ># 0#) `andI#` yn#+ !s# = 0# -# ((c0# `orI#` c1#) `andI#` (r# /=# 0#))+ !k# = s# `andI#` y#+ !r# = x# `remInt#` y#++{-# INLINE [0] modInt8# #-}+modInt8# :: Int8# -> Int8# -> Int8#+x# `modInt8#` y# = r# `plusInt8#` k#+ where+ zero# = intToInt8# 0#+ x `andInt8#` y = word8ToInt8# (int8ToWord8# x `andWord8#` int8ToWord8# y)+ x `orInt8#` y = word8ToInt8# (int8ToWord8# x `orWord8#` int8ToWord8# y)+ notInt8# x = word8ToInt8# (notWord8# (int8ToWord8# x))+ -- See Note [modInt# implementation]+ !yn# = intToInt8# (y# `ltInt8#` zero#)+ !c0# = intToInt8# (x# `ltInt8#` zero#) `andInt8#` (notInt8# yn#)+ !c1# = intToInt8# (x# `gtInt8#` zero#) `andInt8#` yn#+ !s# = zero# `subInt8#` ((c0# `orInt8#` c1#) `andInt8#` (intToInt8# (r# `neInt8#` zero#)))+ !k# = s# `andInt8#` y#+ !r# = x# `remInt8#` y#++{-# INLINE [0] modInt16# #-}+modInt16# :: Int16# -> Int16# -> Int16#+x# `modInt16#` y# = r# `plusInt16#` k#+ where+ zero# = intToInt16# 0#+ x `andInt16#` y = word16ToInt16# (int16ToWord16# x `andWord16#` int16ToWord16# y)+ x `orInt16#` y = word16ToInt16# (int16ToWord16# x `orWord16#` int16ToWord16# y)+ notInt16# x = word16ToInt16# (notWord16# (int16ToWord16# x))+ -- See Note [modInt# implementation]+ !yn# = intToInt16# (y# `ltInt16#` zero#)+ !c0# = intToInt16# (x# `ltInt16#` zero#) `andInt16#` (notInt16# yn#)+ !c1# = intToInt16# (x# `gtInt16#` zero#) `andInt16#` yn#+ !s# = zero# `subInt16#` ((c0# `orInt16#` c1#) `andInt16#` (intToInt16# (r# `neInt16#` zero#)))+ !k# = s# `andInt16#` y#+ !r# = x# `remInt16#` y#++{-# INLINE [0] modInt32# #-}+modInt32# :: Int32# -> Int32# -> Int32#+x# `modInt32#` y# = r# `plusInt32#` k#+ where+ zero# = intToInt32# 0#+ x `andInt32#` y = word32ToInt32# (int32ToWord32# x `andWord32#` int32ToWord32# y)+ x `orInt32#` y = word32ToInt32# (int32ToWord32# x `orWord32#` int32ToWord32# y)+ notInt32# x = word32ToInt32# (notWord32# (int32ToWord32# x))+ -- See Note [modInt# implementation]+ !yn# = intToInt32# (y# `ltInt32#` zero#)+ !c0# = intToInt32# (x# `ltInt32#` zero#) `andInt32#` (notInt32# yn#)+ !c1# = intToInt32# (x# `gtInt32#` zero#) `andInt32#` yn#+ !s# = zero# `subInt32#` ((c0# `orInt32#` c1#) `andInt32#` (intToInt32# (r# `neInt32#` zero#)))+ !k# = s# `andInt32#` y#+ !r# = x# `remInt32#` y#++-- Note [modInt# implementation]+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+-- Similarly to divInt# (see Note [divInt# implementation]), we can derive the+-- branchless implementation of modInt# as follows:+--+-- = if isTrue# (x# ># 0#) && isTrue# (y# <# 0#) ||+-- isTrue# (x# <# 0#) && isTrue# (y# ># 0#)+-- then if isTrue# (r# /=# 0#) then r# +# y# else 0#+-- else r#+-- where+-- r# = x# `remInt#` y#+--+-- ===> { Introduce constant k# }+--+-- r# +# k#+-- where+-- k# = if isTrue# (x# ># 0#) && isTrue# (y# <# 0#) ||+-- isTrue# (x# <# 0#) && isTrue# (y# ># 0#)+-- then if isTrue# (r# /=# 0#) then y# else 0#+-- else 0#+-- r# = x# `remInt#` y#+--+-- ===> { Compute using Bool# }+--+-- r# +# k#+-- where+-- yn# = y# <# 0# -- we don't need to consider y# ==# 0#+-- c0# = (x# <# 0#) &&# (notI# yn#)+-- c1# = (x# ># 0#) &&# yn#+-- k# = if isTrue# ((c0# ||# c1#) &&# (r# /=# 0#))+-- then y#+-- else 0#+-- r# = x# `remInt#` y#+--+-- ===> { Select y# or 0# in branchless way }+--+-- r# +# k#+-- where+-- yn# = y# <# 0#+-- c0# = (x# <# 0#) &&# (notI# yn#)+-- c1# = (x# ># 0#) &&# yn#+-- -- s# is either equal to:+-- -- 0# (00..00b)+-- -- -1# (11..11b)+-- -- So we can AND s# with y#+-- s# = 0# -# ((c0# ||# c1#) &&# (r# /=# 0#))+-- k# = s# &&# y#+-- r# = x# `remInt#` y#++{-# INLINE [0] divModInt# #-}+divModInt# :: Int# -> Int# -> (# Int#, Int# #)+x# `divModInt#` y# = case (x# +# bias#) `quotRemInt#` y# of+ (# q#, r# #) -> (# q# -# hard#, r# +# k# #)+ where+ -- See Note [divModInt# implementation]+ !yn# = y# <# 0#+ !c0# = (x# <# 0#) `andI#` (notI# yn#)+ !c1# = (x# ># 0#) `andI#` yn#+ !bias# = c0# -# c1#+ !hard# = c0# `orI#` c1#+ !s# = 0# -# hard#+ !k# = (s# `andI#` y#) -# bias#++{-# INLINE [0] divModInt8# #-}+divModInt8# :: Int8# -> Int8# -> (# Int8#, Int8# #)+x# `divModInt8#` y# = case (x# `plusInt8#` bias#) `quotRemInt8#` y# of+ (# q#, r# #) -> (# q# `subInt8#` hard#, r# `plusInt8#` k# #)+ where+ zero# = intToInt8# 0#+ x `andInt8#` y = word8ToInt8# (int8ToWord8# x `andWord8#` int8ToWord8# y)+ x `orInt8#` y = word8ToInt8# (int8ToWord8# x `orWord8#` int8ToWord8# y)+ notInt8# x = word8ToInt8# (notWord8# (int8ToWord8# x))+ -- See Note [divModInt# implementation]+ !yn# = intToInt8# (y# `ltInt8#` zero#)+ !c0# = intToInt8# (x# `ltInt8#` zero#) `andInt8#` (notInt8# yn#)+ !c1# = intToInt8# (x# `gtInt8#` zero#) `andInt8#` yn#+ !bias# = c0# `subInt8#` c1#+ !hard# = c0# `orInt8#` c1#+ !s# = zero# `subInt8#` hard#+ !k# = (s# `andInt8#` y#) `subInt8#` bias#++{-# INLINE [0] divModInt16# #-}+divModInt16# :: Int16# -> Int16# -> (# Int16#, Int16# #)+x# `divModInt16#` y# = case (x# `plusInt16#` bias#) `quotRemInt16#` y# of+ (# q#, r# #) -> (# q# `subInt16#` hard#, r# `plusInt16#` k# #)+ where+ zero# = intToInt16# 0#+ x `andInt16#` y = word16ToInt16# (int16ToWord16# x `andWord16#` int16ToWord16# y)+ x `orInt16#` y = word16ToInt16# (int16ToWord16# x `orWord16#` int16ToWord16# y)+ notInt16# x = word16ToInt16# (notWord16# (int16ToWord16# x))+ -- See Note [divModInt# implementation]+ !yn# = intToInt16# (y# `ltInt16#` zero#)+ !c0# = intToInt16# (x# `ltInt16#` zero#) `andInt16#` (notInt16# yn#)+ !c1# = intToInt16# (x# `gtInt16#` zero#) `andInt16#` yn#+ !bias# = c0# `subInt16#` c1#+ !hard# = c0# `orInt16#` c1#+ !s# = zero# `subInt16#` hard#+ !k# = (s# `andInt16#` y#) `subInt16#` bias#++{-# INLINE [0] divModInt32# #-}+divModInt32# :: Int32# -> Int32# -> (# Int32#, Int32# #)+x# `divModInt32#` y# = case (x# `plusInt32#` bias#) `quotRemInt32#` y# of+ (# q#, r# #) -> (# q# `subInt32#` hard#, r# `plusInt32#` k# #)+ where+ zero# = intToInt32# 0#+ x `andInt32#` y = word32ToInt32# (int32ToWord32# x `andWord32#` int32ToWord32# y)+ x `orInt32#` y = word32ToInt32# (int32ToWord32# x `orWord32#` int32ToWord32# y)+ notInt32# x = word32ToInt32# (notWord32# (int32ToWord32# x))+ -- See Note [divModInt# implementation]+ !yn# = intToInt32# (y# `ltInt32#` zero#)+ !c0# = intToInt32# (x# `ltInt32#` zero#) `andInt32#` (notInt32# yn#)+ !c1# = intToInt32# (x# `gtInt32#` zero#) `andInt32#` yn#+ !bias# = c0# `subInt32#` c1#+ !hard# = c0# `orInt32#` c1#+ !s# = zero# `subInt32#` hard#+ !k# = (s# `andInt32#` y#) `subInt32#` bias#++-- Note [divModInt# implementation]+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+-- divModInt# is written by deriving the following code similarly to divInt# and+-- modInt# (see Note [divInt# implementation] and Note [modInt#+-- implementation]).+--+-- x# `divModInt#` y#+-- | isTrue# (x# ># 0#) && isTrue# (y# <# 0#) =+-- case (x# -# 1#) `quotRemInt#` y# of+-- (# q, r #) -> (# q -# 1#, r +# y# +# 1# #)+-- | isTrue# (x# <# 0#) && isTrue# (y# ># 0#) =+-- case (x# +# 1#) `quotRemInt#` y# of+-- (# q, r #) -> (# q -# 1#, r +# y# -# 1# #)+-- | otherwise =+-- x# `quotRemInt#` y#+--+-- ===> { Introduce constants }+--+-- case (x# +# bias#) `quotRemInt#` y# of+-- (# q#, r# #) -> (# q# -# hard#, r# +# k# #)+-- where+-- (bias#,hard#,k#)+-- | isTrue# (x# ># 0#) && isTrue# (y# <# 0#) = (-1#, 1#, y#+1#)+-- | isTrue# (x# <# 0#) && isTrue# (y# ># 0#) = ( 1#, 1#, y#-1#)+-- | otherwise = ( 0#, 0#, 0#-0#)+--+-- ===> { Compute using Bool# }+--+-- case (x# +# bias#) `quotRemInt#` y# of+-- (# q#, r# #) -> (# q# -# hard#, r# +# k# #)+-- where+-- yn# = y# <# 0#+-- c0# = (x# <# 0#) `andI#` (notI# yn#)+-- c1# = (x# ># 0#) `andI#` yn#+-- bias# = c0# -# c1#+-- hard# = c0# `orI#` c1#+-- s# = 0# -# hard#+-- k# = (s# `andI#` y#) -# bias#+--++{- *************************************************************+* *+* Constraint tuples *+* *+************************************************************* -}++type CTuple0 = (() :: Constraint)+type CTuple1 = CSolo++class CUnit+class a => CSolo a+class (c1, c2) => CTuple2 c1 c2+class (c1, c2, c3) => CTuple3 c1 c2 c3+class (c1, c2, c3, c4) => CTuple4 c1 c2 c3 c4+class (c1, c2, c3, c4, c5) => CTuple5 c1 c2 c3 c4 c5+class (c1, c2, c3, c4, c5, c6) => CTuple6 c1 c2 c3 c4 c5 c6+class (c1, c2, c3, c4, c5, c6, c7) => CTuple7 c1 c2 c3 c4 c5 c6 c7+class (c1, c2, c3, c4, c5, c6, c7, c8) => CTuple8 c1 c2 c3 c4 c5 c6 c7 c8+class (c1, c2, c3, c4, c5, c6, c7, c8, c9)+ => CTuple9 c1 c2 c3 c4 c5 c6 c7 c8 c9+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)+ => CTuple10 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)+ => CTuple11 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)+ => CTuple12 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)+ => CTuple13 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)+ => CTuple14 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)+ => CTuple15 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)+ => CTuple16 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17)+ => CTuple17 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17,c18)+ => CTuple18 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19)+ => CTuple19 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20)+ => CTuple20 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21)+ => CTuple21 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22)+ => CTuple22 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23)+ => CTuple23 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24)+ => CTuple24 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25)+ => CTuple25 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)+ => CTuple26 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)+ => CTuple27 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)+ => CTuple28 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)+ => CTuple29 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)+ => CTuple30 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31)+ => CTuple31 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32)+ => CTuple32 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33)+ => CTuple33 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34)+ => CTuple34 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35)+ => CTuple35 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36)+ => CTuple36 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37)+ => CTuple37 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38)+ => CTuple38 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39)+ => CTuple39 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)+ => CTuple40 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)+ => CTuple41 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)+ => CTuple42 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)+ => CTuple43 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)+ => CTuple44 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45)+ => CTuple45 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46)+ => CTuple46 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47)+ => CTuple47 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48)+ => CTuple48 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49)+ => CTuple49 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50)+ => CTuple50 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51)+ => CTuple51 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52)+ => CTuple52 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53)+ => CTuple53 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)+ => CTuple54 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)+ => CTuple55 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)+ => CTuple56 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)+ => CTuple57 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)+ => CTuple58 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59)+ => CTuple59 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60)+ => CTuple60 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61)+ => CTuple61 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61, c62)+ => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61 c62+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61, c62, c63)+ => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61 c62 c63+class (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61, c62, c63, c64)+ => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61 c62 c63 c64++instance CUnit+instance a => CSolo a+instance (c1, c2) => CTuple2 c1 c2+instance (c1, c2, c3) => CTuple3 c1 c2 c3+instance (c1, c2, c3, c4) => CTuple4 c1 c2 c3 c4+instance (c1, c2, c3, c4, c5) => CTuple5 c1 c2 c3 c4 c5+instance (c1, c2, c3, c4, c5, c6) => CTuple6 c1 c2 c3 c4 c5 c6+instance (c1, c2, c3, c4, c5, c6, c7) => CTuple7 c1 c2 c3 c4 c5 c6 c7+instance (c1, c2, c3, c4, c5, c6, c7, c8) => CTuple8 c1 c2 c3 c4 c5 c6 c7 c8+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9)+ => CTuple9 c1 c2 c3 c4 c5 c6 c7 c8 c9+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10)+ => CTuple10 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11)+ => CTuple11 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12)+ => CTuple12 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13)+ => CTuple13 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14)+ => CTuple14 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15)+ => CTuple15 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16)+ => CTuple16 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17)+ => CTuple17 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17,c18)+ => CTuple18 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19)+ => CTuple19 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20)+ => CTuple20 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21)+ => CTuple21 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22)+ => CTuple22 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23)+ => CTuple23 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24)+ => CTuple24 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25)+ => CTuple25 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26)+ => CTuple26 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27)+ => CTuple27 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28)+ => CTuple28 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29)+ => CTuple29 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30)+ => CTuple30 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31)+ => CTuple31 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32)+ => CTuple32 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33)+ => CTuple33 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34)+ => CTuple34 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35)+ => CTuple35 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36)+ => CTuple36 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37)+ => CTuple37 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38)+ => CTuple38 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39)+ => CTuple39 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40)+ => CTuple40 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41)+ => CTuple41 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42)+ => CTuple42 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43)+ => CTuple43 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44)+ => CTuple44 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45)+ => CTuple45 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46)+ => CTuple46 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47)+ => CTuple47 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48)+ => CTuple48 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49)+ => CTuple49 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50)+ => CTuple50 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51)+ => CTuple51 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52)+ => CTuple52 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53)+ => CTuple53 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54)+ => CTuple54 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55)+ => CTuple55 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56)+ => CTuple56 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57)+ => CTuple57 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58)+ => CTuple58 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59)+ => CTuple59 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60)+ => CTuple60 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61)+ => CTuple61 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61, c62)+ => CTuple62 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61 c62+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61, c62, c63)+ => CTuple63 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61 c62 c63+instance (c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, c12, c13, c14, c15, c16,+ c17, c18, c19, c20, c21, c22, c23, c24, c25, c26, c27, c28, c29, c30,+ c31, c32, c33, c34, c35, c36, c37, c38, c39, c40, c41, c42, c43, c44,+ c45, c46, c47, c48, c49, c50, c51, c52, c53, c54, c55, c56, c57, c58,+ c59, c60, c61, c62, c63, c64)+ => CTuple64 c1 c2 c3 c4 c5 c6 c7 c8 c9 c10 c11 c12 c13 c14 c15 c16 c17 c18+ c19 c20 c21 c22 c23 c24 c25 c26 c27 c28 c29 c30 c31 c32 c33 c34 c35 c36+ c37 c38 c39 c40 c41 c42 c43 c44 c45 c46 c47 c48 c49 c50 c51 c52 c53 c54+ c55 c56 c57 c58 c59 c60 c61 c62 c63 c64
GHC/Debug.hs view
@@ -1,10 +1,15 @@ {-# LANGUAGE Trustworthy #-} {-# LANGUAGE MagicHash, NoImplicitPrelude, UnboxedTuples, UnliftedFFITypes #-} +-- | Users should not import this module. It is GHC internal only.+ module GHC.Debug ( debugLn, debugErrLn ) where import GHC.Prim import GHC.Types++-- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base+-- (This module uses the empty tuple.) import GHC.Tuple () debugLn :: [Char] -> IO ()
GHC/Magic.hs view
@@ -4,6 +4,8 @@ {-# LANGUAGE DataKinds #-} {-# LANGUAGE PolyKinds #-} {-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE StandaloneKindSignatures #-}+{-# OPTIONS_HADDOCK print-explicit-runtime-reps #-} ----------------------------------------------------------------------------- -- |@@ -11,7 +13,7 @@ -- Copyright : (c) The University of Glasgow 2009 -- License : see libraries/ghc-prim/LICENSE ----- Maintainer : cvs-ghc@haskell.org+-- Maintainer : ghc-devs@haskell.org -- Stability : internal -- Portability : non-portable (GHC Extensions) --@@ -22,7 +24,7 @@ -- ----------------------------------------------------------------------------- -module GHC.Magic ( inline, noinline, lazy, oneShot, runRW# ) where+module GHC.Magic ( inline, noinline, lazy, oneShot, runRW#, DataToTag(..) ) where -------------------------------------------------- -- See Note [magicIds] in GHC.Types.Id.Make@@ -31,8 +33,8 @@ -- Here import TYPE explicitly from GHC.Types and not from GHC.Prim. This is -- because TYPE is not exported by the source Haskell module generated by -- genprimops which Haddock will typecheck (#15935).-import GHC.Prim (State#, realWorld#, RealWorld)-import GHC.Types (RuntimeRep, TYPE)+import GHC.Prim (State#, realWorld#, RealWorld, Int#)+import GHC.Types (RuntimeRep(BoxedRep), TYPE, Levity, Constraint) -- | The call @inline f@ arranges that @f@ is inlined, regardless of -- its size. More precisely, the call @inline f@ rewrites to the@@ -56,8 +58,8 @@ -- | The call @noinline f@ arranges that @f@ will not be inlined. -- It is removed during CorePrep so that its use imposes no overhead -- (besides the fact that it blocks inlining.)-{-# NOINLINE noinline #-} noinline :: a -> a+{-# NOINLINE noinline #-} -- noinline is inlined manually in CorePrep noinline x = x -- | The 'lazy' function restrains strictness analysis a little. The@@ -77,6 +79,7 @@ -- If 'lazy' were not lazy, 'Control.Parallel.par' would look strict in -- @y@ which would defeat the whole purpose of 'Control.Parallel.par'. lazy :: a -> a+{-# NOINLINE lazy #-} -- lazy is inlined manually in CorePrep lazy x = x -- Implementation note: its strictness and unfolding are over-ridden -- by the definition in GHC.Types.Id.Make; in both cases to nothing at all.@@ -94,7 +97,7 @@ -- that would otherwise be shared are re-evaluated every time they are used. Otherwise, -- the use of `oneShot` is safe. ----- 'oneShot' is representation polymorphic: the type variables may refer to lifted+-- 'oneShot' is representation-polymorphic: the type variables may refer to lifted -- or unlifted types. oneShot :: forall (q :: RuntimeRep) (r :: RuntimeRep) (a :: TYPE q) (b :: TYPE r).@@ -108,7 +111,7 @@ -- semantically undesirable floating. `runRW#` is inlined, but only very late -- in compilation after all floating is complete. --- 'runRW#' is representation polymorphic: the result may have a lifted or+-- 'runRW#' is levity-polymorphic: the result may have a lifted or -- unlifted type. runRW# :: forall (r :: RuntimeRep) (o :: TYPE r).@@ -116,3 +119,21 @@ -- See Note [runRW magic] in GHC.CoreToStg.Prep. {-# NOINLINE runRW# #-} -- runRW# is inlined manually in CorePrep runRW# m = m realWorld#++-- | @'dataToTag#'@ evaluates its argument and returns the index+-- (starting at zero) of the constructor used to produce that+-- argument. Any algebraic data type with all of its constructors+-- in scope may be used with @dataToTag#@.+--+-- >>> dataToTag# (Left ())+-- 0#+-- >>> dataToTag# (Right undefined)+-- 1#+type DataToTag :: forall {lev :: Levity}. TYPE (BoxedRep lev) -> Constraint+-- See Note [DataToTag overview] in GHC.Tc.Instance.Class.+--+-- Ignoring DatatypeContexts, any generated DataToTag instance is+-- equivalent to a function the user could have written themselves.+-- So it does not get its own Unsafe module, unlike WithDict.+class DataToTag a where+ dataToTag# :: a -> Int#
+ GHC/Magic/Dict.hs view
@@ -0,0 +1,72 @@+{-# LANGUAGE ConstraintKinds #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE ImpredicativeTypes #-}+{-# LANGUAGE MultiParamTypeClasses #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE PolyKinds #-}+{-# LANGUAGE RankNTypes #-}+{-# LANGUAGE AllowAmbiguousTypes #-} -- See Note [withDict has an ambiguous type]+{-# LANGUAGE Unsafe #-}++-----------------------------------------------------------------------------+-- |+-- Module : GHC.Magic.Dict+-- Copyright : (c) The University of Glasgow 2009+-- License : see libraries/ghc-prim/LICENSE+--+-- Maintainer : ghc-devs@haskell.org+-- Stability : internal+-- Portability : non-portable (GHC Extensions)+--+-- Defines the 'withDict' function. For more information, see+-- @Note [withDict]@ in "GHC.Tc.Instance.Class" in GHC.+-- The definition of 'withDict' is located in a separate module from+-- "GHC.Magic" because 'withDict' is @Unsafe@ (it threatens type class+-- coherence) while "GHC.Magic" is @Trustworthy@.+--+-- Use "GHC.Exts" from the @base@ package instead of importing this+-- module directly.+--+-----------------------------------------------------------------------------++module GHC.Magic.Dict (+ WithDict( withDict )+ ) where++import GHC.Types (RuntimeRep, TYPE)++-- | The constraint @'WithDict' cls meth@ can be solved when evidence for+-- the constraint @cls@ can be provided in the form of a dictionary of+-- type @meth@. This requires @cls@ to be a class constraint whose single+-- method has type @meth@.+--+-- For more (important) details on how this works, see+-- @Note [withDict]@ in "GHC.Tc.Instance.Class" in GHC.+--+-- @since 0.9.0+class WithDict cls meth where+ -- @'withDict' d f@ provides a way to call a type-class–overloaded function+ -- @f@ by applying it to the supplied dictionary @d@.+ --+ -- 'withDict' can only be used if the type class has a single method with no+ -- superclasses.+ --+ -- @since 0.9.0+ withDict :: forall {rr :: RuntimeRep} (r :: TYPE rr). meth -> (cls => r) -> r++{- Note [withDict has an ambiguous type]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+The type of `withDict` is ambiguous. Consider+ foo :: forall cls meth. WithDict cls meth+ => forall rr (r::rr). meth -> (cls => r) -> r+ foo m k = withDict m k++If we instantiate `withDict` with fresh unification variables, including cls0 for cls,+there is nothing that forces the `cls` Wanted from the call to `k` to unify with the+`cls0` Given from the call to `withDict`. You have to give it a class argument:++ foo m k = withDict @cls m k++That's fine. But it means we need -XAllowAmbiguousTypes for the withDict definition,+at least with deep subsumption.+-}
GHC/Prim/Exception.hs view
@@ -1,11 +1,10 @@-{-# LANGUAGE GHCForeignImportPrim #-}-{-# LANGUAGE UnliftedFFITypes #-} {-# LANGUAGE MagicHash #-} {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE NoImplicitPrelude #-}-{-# LANGUAGE EmptyCase #-} -- | Primitive exceptions.+--+-- Users should not import this module. It is GHC internal only. module GHC.Prim.Exception ( raiseOverflow , raiseUnderflow@@ -14,39 +13,31 @@ where import GHC.Prim-import GHC.Magic +-- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base+import GHC.Types ()+ default () -- Double and Integer aren't available yet -- Note [Arithmetic exceptions] -- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~--- -- ghc-prim provides several functions to raise arithmetic exceptions -- (raiseDivZero, raiseUnderflow, raiseOverflow) that are wired-in the RTS. -- These exceptions are meant to be used by the package implementing arbitrary -- precision numbers (Natural,Integer). It can't depend on `base` package to -- raise exceptions in a normal way because it would create a dependency -- cycle (base <-> bignum package). See #14664--foreign import prim "stg_raiseOverflowzh" raiseOverflow# :: State# RealWorld -> (# State# RealWorld, (# #) #)-foreign import prim "stg_raiseUnderflowzh" raiseUnderflow# :: State# RealWorld -> (# State# RealWorld, (# #) #)-foreign import prim "stg_raiseDivZZerozh" raiseDivZero# :: State# RealWorld -> (# State# RealWorld, (# #) #)---- We give a bottoming demand signature to 'raiseOverflow', 'raiseUnderflow' and--- 'raiseDivZero' in "GHC.Core.Make". NOINLINE pragmas are necessary because if--- we ever inlined them we would lose that information.+--+-- See also: Note [Wired-in exceptions are not CAFfy] in GHC.Core.Make. -- | Raise 'GHC.Exception.Type.overflowException' raiseOverflow :: a-{-# NOINLINE raiseOverflow #-}-raiseOverflow = runRW# (\s -> case raiseOverflow# s of (# _, _ #) -> let x = x in x)+raiseOverflow = raiseOverflow# (# #) -- | Raise 'GHC.Exception.Type.underflowException' raiseUnderflow :: a-{-# NOINLINE raiseUnderflow #-}-raiseUnderflow = runRW# (\s -> case raiseUnderflow# s of (# _, _ #) -> let x = x in x)+raiseUnderflow = raiseUnderflow# (# #) -- | Raise 'GHC.Exception.Type.divZeroException' raiseDivZero :: a-{-# NOINLINE raiseDivZero #-}-raiseDivZero = runRW# (\s -> case raiseDivZero# s of (# _, _ #) -> let x = x in x)+raiseDivZero = raiseDivZero# (# #)
GHC/Prim/Ext.hs view
@@ -5,6 +5,8 @@ {-# LANGUAGE GHCForeignImportPrim #-} {-# LANGUAGE UnliftedFFITypes #-} +{-# OPTIONS_GHC -Wno-orphans -Wno-inline-rule-shadowing #-}+ -- We need platform defines (tests for mingw32 below). #include "ghcplatform.h" #include "MachDeps.h"@@ -16,6 +18,9 @@ -- | Extra C-- routines exposed from the RTS --+-- Users should not import this module. It is GHC internal only. Use+-- "GHC.Conc" instead.+-- -- Actual primops are emitted by the compiler itself. They are special bits of -- code with backend support. The foreign functions in this module aren't actual -- primops because the compiler doesn't care about them at all: they just are@@ -26,41 +31,22 @@ -- are described over there. module GHC.Prim.Ext (- -- 64-bit bit aliases- INT64- , WORD64+ -- * Misc+ getThreadAllocationCounter# -- * Delay\/wait operations #if defined(mingw32_HOST_OS) , asyncRead# , asyncWrite# , asyncDoProc# #endif- -- * Misc- , getThreadAllocationCounter# ) where import GHC.Prim-import GHC.Types () -- Make implicit dependency known to build system -default () -- Double and Integer aren't available yet----------------------------------------------------------------------------- 64-bit bit aliases---------------------------------------------------------------------------type INT64 =-#if WORD_SIZE_IN_BITS < 64- Int64#-#else- Int#-#endif+-- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base+import GHC.Types () -type WORD64 =-#if WORD_SIZE_IN_BITS < 64- Word64#-#else- Word#-#endif+default () -- Double and Integer aren't available yet ------------------------------------------------------------------------ -- Delay/wait operations@@ -102,4 +88,162 @@ -- | Retrieves the allocation counter for the current thread. foreign import prim "stg_getThreadAllocationCounterzh" getThreadAllocationCounter# :: State# RealWorld- -> (# State# RealWorld, INT64 #)+ -> (# State# RealWorld, Int64# #)++------------------------------------------------------------------------+-- Rules for primops that don't need to be built-in+------------------------------------------------------------------------++-- All these rules are used to remove useless casts:+--+-- 1. passing through a type with at least the same bit size:+-- e.g. Int8# -> Int# -> Int8#+-- ==> id+--+-- 2. passing through a (un)signed type of the same bit size:+-- e.g. Word# -> Int# -> Word#+-- ==> id+--+-- 3. one of the previous cases with signedness change:+-- e.g. Int8# -> Int# -> Word# -> Word8#+-- ==> Int8# -> Word8#+--+++-- case 1:+-- ~~~~~~~++{-# RULES++"Int8# -> Int# -> Int8#"+ forall x . intToInt8# (int8ToInt# x) = x++"Int16# -> Int# -> Int16#"+ forall x . intToInt16# (int16ToInt# x) = x++"Int32# -> Int# -> Int32#"+ forall x . intToInt32# (int32ToInt# x) = x+++"Word8# -> Word# -> Word8#"+ forall x . wordToWord8# (word8ToWord# x) = x++"Word16# -> Word# -> Word16#"+ forall x . wordToWord16# (word16ToWord# x) = x++"Word32# -> Word# -> Word32#"+ forall x . wordToWord32# (word32ToWord# x) = x+++"Int# -> Int64# -> Int#"+ forall x . int64ToInt# (intToInt64# x) = x++"Word# -> Word64# -> Word#"+ forall x . word64ToWord# (wordToWord64# x) = x++#-}++#if WORD_SIZE_IN_BITS == 64+{-# RULES++"Int64# -> Int# -> Int64#"+ forall x . intToInt64# (int64ToInt# x) = x++"Word64# -> Word# -> Word64#"+ forall x . wordToWord64# (word64ToWord# x) = x++#-}+#endif+++-- case 2:+-- ~~~~~~~++{-# RULES++"Word# -> Int# -> Word#"+ forall x . int2Word# (word2Int# x) = x++"Int# -> Word# -> Int#"+ forall x . word2Int# (int2Word# x) = x++"Int8# -> Word8# -> Int8#"+ forall x . word8ToInt8# (int8ToWord8# x) = x++"Word8# -> Int8# -> Word8#"+ forall x . int8ToWord8# (word8ToInt8# x) = x++"Int16# -> Word16# -> Int16#"+ forall x . word16ToInt16# (int16ToWord16# x) = x++"Word16# -> Int16# -> Word16#"+ forall x . int16ToWord16# (word16ToInt16# x) = x++"Int32# -> Word32# -> Int32#"+ forall x . word32ToInt32# (int32ToWord32# x) = x++"Word32# -> Int32# -> Word32#"+ forall x . int32ToWord32# (word32ToInt32# x) = x++"Int64# -> Word64# -> Int64#"+ forall x . word64ToInt64# (int64ToWord64# x) = x++"Word64# -> Int64# -> Word64#"+ forall x . int64ToWord64# (word64ToInt64# x) = x++#-}++-- case 3:+-- ~~~~~~~++{-# RULES++"Int8# -> Int# -> Word# -> Word8#"+ forall x . wordToWord8# (int2Word# (int8ToInt# x)) = int8ToWord8# x++"Int16# -> Int# -> Word# -> Word16#"+ forall x . wordToWord16# (int2Word# (int16ToInt# x)) = int16ToWord16# x++"Int32# -> Int# -> Word# -> Word32#"+ forall x . wordToWord32# (int2Word# (int32ToInt# x)) = int32ToWord32# x++"Word8# -> Word# -> Int# -> Int8#"+ forall x . intToInt8# (word2Int# (word8ToWord# x)) = word8ToInt8# x++"Word16# -> Word# -> Int# -> Int16#"+ forall x . intToInt16# (word2Int# (word16ToWord# x)) = word16ToInt16# x++"Word32# -> Word# -> Int# -> Int32#"+ forall x . intToInt32# (word2Int# (word32ToWord# x)) = word32ToInt32# x++"Word# -> Word64# -> Int64# -> Int#"+ forall x. int64ToInt# (word64ToInt64# (wordToWord64# x)) = word2Int# x++"Int# -> Int64# -> Word64# -> Word#"+ forall x. word64ToWord# (int64ToWord64# (intToInt64# x)) = int2Word# x++#-}++#if WORD_SIZE_IN_BITS == 64+{-# RULES+"Int64# -> Int# -> Word# -> Word64#"+ forall x . wordToWord64# (int2Word# (int64ToInt# x)) = int64ToWord64# x++"Word64# -> Word# -> Int# -> Int64#"+ forall x . intToInt64# (word2Int# (word64ToWord# x)) = word64ToInt64# x+#-}+#endif+++-- Push downcast into bitwise operations+{-# RULES+"word64ToWord#/and64#"+ forall x y . word64ToWord# (and64# x y) = and# (word64ToWord# x) (word64ToWord# y)++"word64ToWord#/or64#"+ forall x y . word64ToWord# (or64# x y) = or# (word64ToWord# x) (word64ToWord# y)++"word64ToWord#/xor64#"+ forall x y . word64ToWord# (xor64# x y) = xor# (word64ToWord# x) (word64ToWord# y)++#-}
GHC/Prim/Panic.hs view
@@ -4,17 +4,21 @@ {-# LANGUAGE UnboxedTuples #-} {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE EmptyCase #-}+{-# LANGUAGE RankNTypes, KindSignatures #-} -- | Primitive panics.+--+-- Users should not import this module. It is GHC internal only. module GHC.Prim.Panic ( absentSumFieldError , panicError- , absentError+ , absentError, absentConstraintError ) where import GHC.Prim import GHC.Magic+import GHC.Types( Type ) default () -- Double and Integer aren't available yet @@ -93,7 +97,7 @@ -- | Displays "Oops! Entered absent arg" ++ errormsg and exits the program. {-# NOINLINE absentError #-}-absentError :: Addr# -> a+absentError :: forall (a :: Type). Addr# -> a absentError errmsg = runRW# (\s -> case stg_absentError# errmsg s of@@ -101,3 +105,15 @@ -- use an empty case lest the pattern match -- checker squawks. let x = x in x)++{-# NOINLINE absentConstraintError #-}+absentConstraintError :: forall (a :: Type). Addr# -> a+-- We want to give this the type+-- forall (a :: Constraint). Addr# -> a+-- but Haskell source code doesn't allow functions that return Constraint+-- So in this module we lie about the type. This is fine because+-- absentConstraintError is a wired-in Id with the desired Constraint-kinded+-- type; the type in the interface file is never looked at.+-- The only purpose of this definition is to give a function to call,+-- and for that purpose, delegating to absentError is fine.+absentConstraintError errmsg = absentError errmsg
+ GHC/Prim/PtrEq.hs view
@@ -0,0 +1,153 @@+{-# LANGUAGE Unsafe #-}+{-# LANGUAGE NoImplicitPrelude #-}+{-# LANGUAGE MagicHash #-}+{-# LANGUAGE ScopedTypeVariables #-}+{-# LANGUAGE KindSignatures #-}+{-# LANGUAGE DataKinds #-}+{-# LANGUAGE PolyKinds #-}++-----------------------------------------------------------------------------+-- |+-- Module : GHC.Prim.PtrEq+-- License : see libraries/ghc-prim/LICENSE+--+-- Maintainer : ghc-devs@haskell.org+-- Stability : internal+-- Portability : non-portable (GHC Extensions)+--+-- Comparing underlying pointers for equality.+--+-- Use GHC.Exts from the base package instead of importing this+-- module directly.+--+-----------------------------------------------------------------------------++module GHC.Prim.PtrEq+ ( reallyUnsafePtrEquality,+ unsafePtrEquality#,+ sameArray#,+ sameMutableArray#,+ sameSmallArray#,+ sameSmallMutableArray#,+ sameByteArray#,+ sameMutableByteArray#,+ sameMutVar#,+ sameTVar#,+ sameMVar#,+ sameIOPort#,+ samePromptTag#,+ eqStableName#+ ) where++import GHC.Prim+import GHC.Types -- Also make implicit dependency known to build system+ ( RuntimeRep(BoxedRep), UnliftedType )+default () -- Double and Integer aren't available yet++{- **********************************************************************+* *+* Pointer equality *+* *+********************************************************************** -}++{- Note [Pointer equality operations]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+Many primitive types - such as Array#, ByteArray#, MVar#, ... - are boxed:+they are represented by pointers to the underlying data. It is thus possible+to directly compare these pointers for equality, as opposed to comparing+the underlying data that the pointers refer to (for instance, comparing+two arrays element-wise).++To do this, GHC provides the primop reallyUnsafePtrEquality#, which is+both levity-polymorphic and heterogeneous. As its name indicates, it is an+unsafe operation which can yield unpredictable results, as explained in+Note [Pointer comparison operations] in primops.txt.pp++For a more user-friendly interface, this module defines specialisations of+the reallyUnsafePtrEquality# primop at various primitive types, such as+Array#, ByteArray#, MVar#, ...+-}++-- | Compare the underlying pointers of two values for equality.+--+-- Returns @1@ if the pointers are equal and @0@ otherwise.+--+-- The two values must be of the same type, of kind 'Type'.+-- See also 'GHC.Exts.reallyUnsafePtrEquality#', which doesn't have+-- such restrictions.+reallyUnsafePtrEquality :: a -> a -> Int#+reallyUnsafePtrEquality = reallyUnsafePtrEquality#+-- See Note [Pointer comparison operations]+-- in primops.txt.pp++-- | Compare the underlying pointers of two unlifted values for equality.+--+-- This is less dangerous than 'reallyUnsafePtrEquality',+-- since the arguments are guaranteed to be evaluated.+-- This means there is no risk of accidentally comparing+-- a thunk.+-- It's however still more dangerous than e.g. 'sameArray#'.+--+unsafePtrEquality# :: forall (a :: UnliftedType) (b :: UnliftedType). a -> b -> Int#+unsafePtrEquality# = reallyUnsafePtrEquality#+-- See Note [Pointer comparison operations]+-- in primops.txt.pp++-- | Compare the underlying pointers of two arrays.+sameArray# :: forall {l} (a :: TYPE (BoxedRep l)). Array# a -> Array# a -> Int#+sameArray# = unsafePtrEquality#++-- | Compare the underlying pointers of two mutable arrays.+sameMutableArray# :: forall {l} s (a :: TYPE (BoxedRep l)). MutableArray# s a -> MutableArray# s a -> Int#+sameMutableArray# = unsafePtrEquality#++-- | Compare the underlying pointers of two small arrays.+sameSmallArray# :: forall {l} (a :: TYPE (BoxedRep l)). SmallArray# a -> SmallArray# a -> Int#+sameSmallArray# = unsafePtrEquality#++-- | Compare the underlying pointers of two small mutable arrays.+sameSmallMutableArray# :: forall {l} s (a :: TYPE (BoxedRep l)). SmallMutableArray# s a -> SmallMutableArray# s a -> Int#+sameSmallMutableArray# = unsafePtrEquality#++-- | Compare the pointers of two byte arrays.+sameByteArray# :: ByteArray# -> ByteArray# -> Int#+sameByteArray# = unsafePtrEquality#++-- | Compare the underlying pointers of two mutable byte arrays.+sameMutableByteArray# :: MutableByteArray# s -> MutableByteArray# s -> Int#+sameMutableByteArray# = unsafePtrEquality#++-- | Compare the underlying pointers of two 'MutVar#'s.+sameMutVar# :: forall {l} s (a :: TYPE (BoxedRep l)). MutVar# s a -> MutVar# s a -> Int#+sameMutVar# = unsafePtrEquality#++-- | Compare the underlying pointers of two 'TVar#'s.+sameTVar# :: forall {l} s (a :: TYPE (BoxedRep l)). TVar# s a -> TVar# s a -> Int#+sameTVar# = unsafePtrEquality#++-- | Compare the underlying pointers of two 'MVar#'s.+sameMVar# :: forall {l} s (a :: TYPE (BoxedRep l)). MVar# s a -> MVar# s a -> Int#+sameMVar# = unsafePtrEquality#++-- | Compare the underlying pointers of two 'IOPort#'s.+sameIOPort# :: forall {l} s (a :: TYPE (BoxedRep l)). IOPort# s a -> IOPort# s a -> Int#+sameIOPort# = unsafePtrEquality#++-- | Compare the underlying pointers of two 'PromptTag#'s.+samePromptTag# :: forall a. PromptTag# a -> PromptTag# a -> Int#+samePromptTag# = unsafePtrEquality#++-- Note [Comparing stable names]+-- ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+-- A StableName# is actually a pointer to a stable name object (SNO)+-- containing an index into the stable name table (SNT). We+-- used to compare StableName#s by following the pointers to the+-- SNOs and checking whether they held the same SNT indices. However,+-- this is not necessary: there is a one-to-one correspondence+-- between SNOs and entries in the SNT, so simple pointer equality+-- does the trick.++-- | Compare two stable names for equality.+eqStableName# :: forall {k} {l} (a :: TYPE (BoxedRep k)) (b :: TYPE (BoxedRep l))+ . StableName# a -> StableName# b -> Int#+eqStableName# = unsafePtrEquality#
GHC/PrimopWrappers.hs view
@@ -1,1926 +1,2213 @@-{-# LANGUAGE MagicHash, NoImplicitPrelude, UnboxedTuples #-}-{-# OPTIONS_GHC -Wno-deprecations -O0 #-}-module GHC.PrimopWrappers where-import qualified GHC.Prim-import GHC.Tuple ()-import GHC.Prim (Char#, Int#, Int8#, Word8#, Word#, Int16#, Word16#, Int32#, Word32#, Float#, Double#, State#, MutableArray#, Array#, SmallMutableArray#, SmallArray#, MutableByteArray#, ByteArray#, Addr#, StablePtr#, MutableArrayArray#, ArrayArray#, MutVar#, RealWorld, TVar#, MVar#, IOPort#, ThreadId#, Weak#, StableName#, Compact#, BCO)-{-# NOINLINE gtChar# #-}-gtChar# :: Char# -> Char# -> Int#-gtChar# a1 a2 = (GHC.Prim.gtChar#) a1 a2-{-# NOINLINE geChar# #-}-geChar# :: Char# -> Char# -> Int#-geChar# a1 a2 = (GHC.Prim.geChar#) a1 a2-{-# NOINLINE eqChar# #-}-eqChar# :: Char# -> Char# -> Int#-eqChar# a1 a2 = (GHC.Prim.eqChar#) a1 a2-{-# NOINLINE neChar# #-}-neChar# :: Char# -> Char# -> Int#-neChar# a1 a2 = (GHC.Prim.neChar#) a1 a2-{-# NOINLINE ltChar# #-}-ltChar# :: Char# -> Char# -> Int#-ltChar# a1 a2 = (GHC.Prim.ltChar#) a1 a2-{-# NOINLINE leChar# #-}-leChar# :: Char# -> Char# -> Int#-leChar# a1 a2 = (GHC.Prim.leChar#) a1 a2-{-# NOINLINE ord# #-}-ord# :: Char# -> Int#-ord# a1 = (GHC.Prim.ord#) a1-{-# NOINLINE int8ToInt# #-}-int8ToInt# :: Int8# -> Int#-int8ToInt# a1 = (GHC.Prim.int8ToInt#) a1-{-# NOINLINE intToInt8# #-}-intToInt8# :: Int# -> Int8#-intToInt8# a1 = (GHC.Prim.intToInt8#) a1-{-# NOINLINE negateInt8# #-}-negateInt8# :: Int8# -> Int8#-negateInt8# a1 = (GHC.Prim.negateInt8#) a1-{-# NOINLINE plusInt8# #-}-plusInt8# :: Int8# -> Int8# -> Int8#-plusInt8# a1 a2 = (GHC.Prim.plusInt8#) a1 a2-{-# NOINLINE subInt8# #-}-subInt8# :: Int8# -> Int8# -> Int8#-subInt8# a1 a2 = (GHC.Prim.subInt8#) a1 a2-{-# NOINLINE timesInt8# #-}-timesInt8# :: Int8# -> Int8# -> Int8#-timesInt8# a1 a2 = (GHC.Prim.timesInt8#) a1 a2-{-# NOINLINE quotInt8# #-}-quotInt8# :: Int8# -> Int8# -> Int8#-quotInt8# a1 a2 = (GHC.Prim.quotInt8#) a1 a2-{-# NOINLINE remInt8# #-}-remInt8# :: Int8# -> Int8# -> Int8#-remInt8# a1 a2 = (GHC.Prim.remInt8#) a1 a2-{-# NOINLINE quotRemInt8# #-}-quotRemInt8# :: Int8# -> Int8# -> (# Int8#,Int8# #)-quotRemInt8# a1 a2 = (GHC.Prim.quotRemInt8#) a1 a2-{-# NOINLINE uncheckedShiftLInt8# #-}-uncheckedShiftLInt8# :: Int8# -> Int# -> Int8#-uncheckedShiftLInt8# a1 a2 = (GHC.Prim.uncheckedShiftLInt8#) a1 a2-{-# NOINLINE uncheckedShiftRAInt8# #-}-uncheckedShiftRAInt8# :: Int8# -> Int# -> Int8#-uncheckedShiftRAInt8# a1 a2 = (GHC.Prim.uncheckedShiftRAInt8#) a1 a2-{-# NOINLINE uncheckedShiftRLInt8# #-}-uncheckedShiftRLInt8# :: Int8# -> Int# -> Int8#-uncheckedShiftRLInt8# a1 a2 = (GHC.Prim.uncheckedShiftRLInt8#) a1 a2-{-# NOINLINE int8ToWord8# #-}-int8ToWord8# :: Int8# -> Word8#-int8ToWord8# a1 = (GHC.Prim.int8ToWord8#) a1-{-# NOINLINE eqInt8# #-}-eqInt8# :: Int8# -> Int8# -> Int#-eqInt8# a1 a2 = (GHC.Prim.eqInt8#) a1 a2-{-# NOINLINE geInt8# #-}-geInt8# :: Int8# -> Int8# -> Int#-geInt8# a1 a2 = (GHC.Prim.geInt8#) a1 a2-{-# NOINLINE gtInt8# #-}-gtInt8# :: Int8# -> Int8# -> Int#-gtInt8# a1 a2 = (GHC.Prim.gtInt8#) a1 a2-{-# NOINLINE leInt8# #-}-leInt8# :: Int8# -> Int8# -> Int#-leInt8# a1 a2 = (GHC.Prim.leInt8#) a1 a2-{-# NOINLINE ltInt8# #-}-ltInt8# :: Int8# -> Int8# -> Int#-ltInt8# a1 a2 = (GHC.Prim.ltInt8#) a1 a2-{-# NOINLINE neInt8# #-}-neInt8# :: Int8# -> Int8# -> Int#-neInt8# a1 a2 = (GHC.Prim.neInt8#) a1 a2-{-# NOINLINE word8ToWord# #-}-word8ToWord# :: Word8# -> Word#-word8ToWord# a1 = (GHC.Prim.word8ToWord#) a1-{-# NOINLINE wordToWord8# #-}-wordToWord8# :: Word# -> Word8#-wordToWord8# a1 = (GHC.Prim.wordToWord8#) a1-{-# NOINLINE plusWord8# #-}-plusWord8# :: Word8# -> Word8# -> Word8#-plusWord8# a1 a2 = (GHC.Prim.plusWord8#) a1 a2-{-# NOINLINE subWord8# #-}-subWord8# :: Word8# -> Word8# -> Word8#-subWord8# a1 a2 = (GHC.Prim.subWord8#) a1 a2-{-# NOINLINE timesWord8# #-}-timesWord8# :: Word8# -> Word8# -> Word8#-timesWord8# a1 a2 = (GHC.Prim.timesWord8#) a1 a2-{-# NOINLINE quotWord8# #-}-quotWord8# :: Word8# -> Word8# -> Word8#-quotWord8# a1 a2 = (GHC.Prim.quotWord8#) a1 a2-{-# NOINLINE remWord8# #-}-remWord8# :: Word8# -> Word8# -> Word8#-remWord8# a1 a2 = (GHC.Prim.remWord8#) a1 a2-{-# NOINLINE quotRemWord8# #-}-quotRemWord8# :: Word8# -> Word8# -> (# Word8#,Word8# #)-quotRemWord8# a1 a2 = (GHC.Prim.quotRemWord8#) a1 a2-{-# NOINLINE andWord8# #-}-andWord8# :: Word8# -> Word8# -> Word8#-andWord8# a1 a2 = (GHC.Prim.andWord8#) a1 a2-{-# NOINLINE orWord8# #-}-orWord8# :: Word8# -> Word8# -> Word8#-orWord8# a1 a2 = (GHC.Prim.orWord8#) a1 a2-{-# NOINLINE xorWord8# #-}-xorWord8# :: Word8# -> Word8# -> Word8#-xorWord8# a1 a2 = (GHC.Prim.xorWord8#) a1 a2-{-# NOINLINE notWord8# #-}-notWord8# :: Word8# -> Word8#-notWord8# a1 = (GHC.Prim.notWord8#) a1-{-# NOINLINE uncheckedShiftLWord8# #-}-uncheckedShiftLWord8# :: Word8# -> Int# -> Word8#-uncheckedShiftLWord8# a1 a2 = (GHC.Prim.uncheckedShiftLWord8#) a1 a2-{-# NOINLINE uncheckedShiftRLWord8# #-}-uncheckedShiftRLWord8# :: Word8# -> Int# -> Word8#-uncheckedShiftRLWord8# a1 a2 = (GHC.Prim.uncheckedShiftRLWord8#) a1 a2-{-# NOINLINE word8ToInt8# #-}-word8ToInt8# :: Word8# -> Int8#-word8ToInt8# a1 = (GHC.Prim.word8ToInt8#) a1-{-# NOINLINE eqWord8# #-}-eqWord8# :: Word8# -> Word8# -> Int#-eqWord8# a1 a2 = (GHC.Prim.eqWord8#) a1 a2-{-# NOINLINE geWord8# #-}-geWord8# :: Word8# -> Word8# -> Int#-geWord8# a1 a2 = (GHC.Prim.geWord8#) a1 a2-{-# NOINLINE gtWord8# #-}-gtWord8# :: Word8# -> Word8# -> Int#-gtWord8# a1 a2 = (GHC.Prim.gtWord8#) a1 a2-{-# NOINLINE leWord8# #-}-leWord8# :: Word8# -> Word8# -> Int#-leWord8# a1 a2 = (GHC.Prim.leWord8#) a1 a2-{-# NOINLINE ltWord8# #-}-ltWord8# :: Word8# -> Word8# -> Int#-ltWord8# a1 a2 = (GHC.Prim.ltWord8#) a1 a2-{-# NOINLINE neWord8# #-}-neWord8# :: Word8# -> Word8# -> Int#-neWord8# a1 a2 = (GHC.Prim.neWord8#) a1 a2-{-# NOINLINE int16ToInt# #-}-int16ToInt# :: Int16# -> Int#-int16ToInt# a1 = (GHC.Prim.int16ToInt#) a1-{-# NOINLINE intToInt16# #-}-intToInt16# :: Int# -> Int16#-intToInt16# a1 = (GHC.Prim.intToInt16#) a1-{-# NOINLINE negateInt16# #-}-negateInt16# :: Int16# -> Int16#-negateInt16# a1 = (GHC.Prim.negateInt16#) a1-{-# NOINLINE plusInt16# #-}-plusInt16# :: Int16# -> Int16# -> Int16#-plusInt16# a1 a2 = (GHC.Prim.plusInt16#) a1 a2-{-# NOINLINE subInt16# #-}-subInt16# :: Int16# -> Int16# -> Int16#-subInt16# a1 a2 = (GHC.Prim.subInt16#) a1 a2-{-# NOINLINE timesInt16# #-}-timesInt16# :: Int16# -> Int16# -> Int16#-timesInt16# a1 a2 = (GHC.Prim.timesInt16#) a1 a2-{-# NOINLINE quotInt16# #-}-quotInt16# :: Int16# -> Int16# -> Int16#-quotInt16# a1 a2 = (GHC.Prim.quotInt16#) a1 a2-{-# NOINLINE remInt16# #-}-remInt16# :: Int16# -> Int16# -> Int16#-remInt16# a1 a2 = (GHC.Prim.remInt16#) a1 a2-{-# NOINLINE quotRemInt16# #-}-quotRemInt16# :: Int16# -> Int16# -> (# Int16#,Int16# #)-quotRemInt16# a1 a2 = (GHC.Prim.quotRemInt16#) a1 a2-{-# NOINLINE uncheckedShiftLInt16# #-}-uncheckedShiftLInt16# :: Int16# -> Int# -> Int16#-uncheckedShiftLInt16# a1 a2 = (GHC.Prim.uncheckedShiftLInt16#) a1 a2-{-# NOINLINE uncheckedShiftRAInt16# #-}-uncheckedShiftRAInt16# :: Int16# -> Int# -> Int16#-uncheckedShiftRAInt16# a1 a2 = (GHC.Prim.uncheckedShiftRAInt16#) a1 a2-{-# NOINLINE uncheckedShiftRLInt16# #-}-uncheckedShiftRLInt16# :: Int16# -> Int# -> Int16#-uncheckedShiftRLInt16# a1 a2 = (GHC.Prim.uncheckedShiftRLInt16#) a1 a2-{-# NOINLINE int16ToWord16# #-}-int16ToWord16# :: Int16# -> Word16#-int16ToWord16# a1 = (GHC.Prim.int16ToWord16#) a1-{-# NOINLINE eqInt16# #-}-eqInt16# :: Int16# -> Int16# -> Int#-eqInt16# a1 a2 = (GHC.Prim.eqInt16#) a1 a2-{-# NOINLINE geInt16# #-}-geInt16# :: Int16# -> Int16# -> Int#-geInt16# a1 a2 = (GHC.Prim.geInt16#) a1 a2-{-# NOINLINE gtInt16# #-}-gtInt16# :: Int16# -> Int16# -> Int#-gtInt16# a1 a2 = (GHC.Prim.gtInt16#) a1 a2-{-# NOINLINE leInt16# #-}-leInt16# :: Int16# -> Int16# -> Int#-leInt16# a1 a2 = (GHC.Prim.leInt16#) a1 a2-{-# NOINLINE ltInt16# #-}-ltInt16# :: Int16# -> Int16# -> Int#-ltInt16# a1 a2 = (GHC.Prim.ltInt16#) a1 a2-{-# NOINLINE neInt16# #-}-neInt16# :: Int16# -> Int16# -> Int#-neInt16# a1 a2 = (GHC.Prim.neInt16#) a1 a2-{-# NOINLINE word16ToWord# #-}-word16ToWord# :: Word16# -> Word#-word16ToWord# a1 = (GHC.Prim.word16ToWord#) a1-{-# NOINLINE wordToWord16# #-}-wordToWord16# :: Word# -> Word16#-wordToWord16# a1 = (GHC.Prim.wordToWord16#) a1-{-# NOINLINE plusWord16# #-}-plusWord16# :: Word16# -> Word16# -> Word16#-plusWord16# a1 a2 = (GHC.Prim.plusWord16#) a1 a2-{-# NOINLINE subWord16# #-}-subWord16# :: Word16# -> Word16# -> Word16#-subWord16# a1 a2 = (GHC.Prim.subWord16#) a1 a2-{-# NOINLINE timesWord16# #-}-timesWord16# :: Word16# -> Word16# -> Word16#-timesWord16# a1 a2 = (GHC.Prim.timesWord16#) a1 a2-{-# NOINLINE quotWord16# #-}-quotWord16# :: Word16# -> Word16# -> Word16#-quotWord16# a1 a2 = (GHC.Prim.quotWord16#) a1 a2-{-# NOINLINE remWord16# #-}-remWord16# :: Word16# -> Word16# -> Word16#-remWord16# a1 a2 = (GHC.Prim.remWord16#) a1 a2-{-# NOINLINE quotRemWord16# #-}-quotRemWord16# :: Word16# -> Word16# -> (# Word16#,Word16# #)-quotRemWord16# a1 a2 = (GHC.Prim.quotRemWord16#) a1 a2-{-# NOINLINE andWord16# #-}-andWord16# :: Word16# -> Word16# -> Word16#-andWord16# a1 a2 = (GHC.Prim.andWord16#) a1 a2-{-# NOINLINE orWord16# #-}-orWord16# :: Word16# -> Word16# -> Word16#-orWord16# a1 a2 = (GHC.Prim.orWord16#) a1 a2-{-# NOINLINE xorWord16# #-}-xorWord16# :: Word16# -> Word16# -> Word16#-xorWord16# a1 a2 = (GHC.Prim.xorWord16#) a1 a2-{-# NOINLINE notWord16# #-}-notWord16# :: Word16# -> Word16#-notWord16# a1 = (GHC.Prim.notWord16#) a1-{-# NOINLINE uncheckedShiftLWord16# #-}-uncheckedShiftLWord16# :: Word16# -> Int# -> Word16#-uncheckedShiftLWord16# a1 a2 = (GHC.Prim.uncheckedShiftLWord16#) a1 a2-{-# NOINLINE uncheckedShiftRLWord16# #-}-uncheckedShiftRLWord16# :: Word16# -> Int# -> Word16#-uncheckedShiftRLWord16# a1 a2 = (GHC.Prim.uncheckedShiftRLWord16#) a1 a2-{-# NOINLINE word16ToInt16# #-}-word16ToInt16# :: Word16# -> Int16#-word16ToInt16# a1 = (GHC.Prim.word16ToInt16#) a1-{-# NOINLINE eqWord16# #-}-eqWord16# :: Word16# -> Word16# -> Int#-eqWord16# a1 a2 = (GHC.Prim.eqWord16#) a1 a2-{-# NOINLINE geWord16# #-}-geWord16# :: Word16# -> Word16# -> Int#-geWord16# a1 a2 = (GHC.Prim.geWord16#) a1 a2-{-# NOINLINE gtWord16# #-}-gtWord16# :: Word16# -> Word16# -> Int#-gtWord16# a1 a2 = (GHC.Prim.gtWord16#) a1 a2-{-# NOINLINE leWord16# #-}-leWord16# :: Word16# -> Word16# -> Int#-leWord16# a1 a2 = (GHC.Prim.leWord16#) a1 a2-{-# NOINLINE ltWord16# #-}-ltWord16# :: Word16# -> Word16# -> Int#-ltWord16# a1 a2 = (GHC.Prim.ltWord16#) a1 a2-{-# NOINLINE neWord16# #-}-neWord16# :: Word16# -> Word16# -> Int#-neWord16# a1 a2 = (GHC.Prim.neWord16#) a1 a2-{-# NOINLINE int32ToInt# #-}-int32ToInt# :: Int32# -> Int#-int32ToInt# a1 = (GHC.Prim.int32ToInt#) a1-{-# NOINLINE intToInt32# #-}-intToInt32# :: Int# -> Int32#-intToInt32# a1 = (GHC.Prim.intToInt32#) a1-{-# NOINLINE negateInt32# #-}-negateInt32# :: Int32# -> Int32#-negateInt32# a1 = (GHC.Prim.negateInt32#) a1-{-# NOINLINE plusInt32# #-}-plusInt32# :: Int32# -> Int32# -> Int32#-plusInt32# a1 a2 = (GHC.Prim.plusInt32#) a1 a2-{-# NOINLINE subInt32# #-}-subInt32# :: Int32# -> Int32# -> Int32#-subInt32# a1 a2 = (GHC.Prim.subInt32#) a1 a2-{-# NOINLINE timesInt32# #-}-timesInt32# :: Int32# -> Int32# -> Int32#-timesInt32# a1 a2 = (GHC.Prim.timesInt32#) a1 a2-{-# NOINLINE quotInt32# #-}-quotInt32# :: Int32# -> Int32# -> Int32#-quotInt32# a1 a2 = (GHC.Prim.quotInt32#) a1 a2-{-# NOINLINE remInt32# #-}-remInt32# :: Int32# -> Int32# -> Int32#-remInt32# a1 a2 = (GHC.Prim.remInt32#) a1 a2-{-# NOINLINE quotRemInt32# #-}-quotRemInt32# :: Int32# -> Int32# -> (# Int32#,Int32# #)-quotRemInt32# a1 a2 = (GHC.Prim.quotRemInt32#) a1 a2-{-# NOINLINE uncheckedShiftLInt32# #-}-uncheckedShiftLInt32# :: Int32# -> Int# -> Int32#-uncheckedShiftLInt32# a1 a2 = (GHC.Prim.uncheckedShiftLInt32#) a1 a2-{-# NOINLINE uncheckedShiftRAInt32# #-}-uncheckedShiftRAInt32# :: Int32# -> Int# -> Int32#-uncheckedShiftRAInt32# a1 a2 = (GHC.Prim.uncheckedShiftRAInt32#) a1 a2-{-# NOINLINE uncheckedShiftRLInt32# #-}-uncheckedShiftRLInt32# :: Int32# -> Int# -> Int32#-uncheckedShiftRLInt32# a1 a2 = (GHC.Prim.uncheckedShiftRLInt32#) a1 a2-{-# NOINLINE int32ToWord32# #-}-int32ToWord32# :: Int32# -> Word32#-int32ToWord32# a1 = (GHC.Prim.int32ToWord32#) a1-{-# NOINLINE eqInt32# #-}-eqInt32# :: Int32# -> Int32# -> Int#-eqInt32# a1 a2 = (GHC.Prim.eqInt32#) a1 a2-{-# NOINLINE geInt32# #-}-geInt32# :: Int32# -> Int32# -> Int#-geInt32# a1 a2 = (GHC.Prim.geInt32#) a1 a2-{-# NOINLINE gtInt32# #-}-gtInt32# :: Int32# -> Int32# -> Int#-gtInt32# a1 a2 = (GHC.Prim.gtInt32#) a1 a2-{-# NOINLINE leInt32# #-}-leInt32# :: Int32# -> Int32# -> Int#-leInt32# a1 a2 = (GHC.Prim.leInt32#) a1 a2-{-# NOINLINE ltInt32# #-}-ltInt32# :: Int32# -> Int32# -> Int#-ltInt32# a1 a2 = (GHC.Prim.ltInt32#) a1 a2-{-# NOINLINE neInt32# #-}-neInt32# :: Int32# -> Int32# -> Int#-neInt32# a1 a2 = (GHC.Prim.neInt32#) a1 a2-{-# NOINLINE word32ToWord# #-}-word32ToWord# :: Word32# -> Word#-word32ToWord# a1 = (GHC.Prim.word32ToWord#) a1-{-# NOINLINE wordToWord32# #-}-wordToWord32# :: Word# -> Word32#-wordToWord32# a1 = (GHC.Prim.wordToWord32#) a1-{-# NOINLINE plusWord32# #-}-plusWord32# :: Word32# -> Word32# -> Word32#-plusWord32# a1 a2 = (GHC.Prim.plusWord32#) a1 a2-{-# NOINLINE subWord32# #-}-subWord32# :: Word32# -> Word32# -> Word32#-subWord32# a1 a2 = (GHC.Prim.subWord32#) a1 a2-{-# NOINLINE timesWord32# #-}-timesWord32# :: Word32# -> Word32# -> Word32#-timesWord32# a1 a2 = (GHC.Prim.timesWord32#) a1 a2-{-# NOINLINE quotWord32# #-}-quotWord32# :: Word32# -> Word32# -> Word32#-quotWord32# a1 a2 = (GHC.Prim.quotWord32#) a1 a2-{-# NOINLINE remWord32# #-}-remWord32# :: Word32# -> Word32# -> Word32#-remWord32# a1 a2 = (GHC.Prim.remWord32#) a1 a2-{-# NOINLINE quotRemWord32# #-}-quotRemWord32# :: Word32# -> Word32# -> (# Word32#,Word32# #)-quotRemWord32# a1 a2 = (GHC.Prim.quotRemWord32#) a1 a2-{-# NOINLINE andWord32# #-}-andWord32# :: Word32# -> Word32# -> Word32#-andWord32# a1 a2 = (GHC.Prim.andWord32#) a1 a2-{-# NOINLINE orWord32# #-}-orWord32# :: Word32# -> Word32# -> Word32#-orWord32# a1 a2 = (GHC.Prim.orWord32#) a1 a2-{-# NOINLINE xorWord32# #-}-xorWord32# :: Word32# -> Word32# -> Word32#-xorWord32# a1 a2 = (GHC.Prim.xorWord32#) a1 a2-{-# NOINLINE notWord32# #-}-notWord32# :: Word32# -> Word32#-notWord32# a1 = (GHC.Prim.notWord32#) a1-{-# NOINLINE uncheckedShiftLWord32# #-}-uncheckedShiftLWord32# :: Word32# -> Int# -> Word32#-uncheckedShiftLWord32# a1 a2 = (GHC.Prim.uncheckedShiftLWord32#) a1 a2-{-# NOINLINE uncheckedShiftRLWord32# #-}-uncheckedShiftRLWord32# :: Word32# -> Int# -> Word32#-uncheckedShiftRLWord32# a1 a2 = (GHC.Prim.uncheckedShiftRLWord32#) a1 a2-{-# NOINLINE word32ToInt32# #-}-word32ToInt32# :: Word32# -> Int32#-word32ToInt32# a1 = (GHC.Prim.word32ToInt32#) a1-{-# NOINLINE eqWord32# #-}-eqWord32# :: Word32# -> Word32# -> Int#-eqWord32# a1 a2 = (GHC.Prim.eqWord32#) a1 a2-{-# NOINLINE geWord32# #-}-geWord32# :: Word32# -> Word32# -> Int#-geWord32# a1 a2 = (GHC.Prim.geWord32#) a1 a2-{-# NOINLINE gtWord32# #-}-gtWord32# :: Word32# -> Word32# -> Int#-gtWord32# a1 a2 = (GHC.Prim.gtWord32#) a1 a2-{-# NOINLINE leWord32# #-}-leWord32# :: Word32# -> Word32# -> Int#-leWord32# a1 a2 = (GHC.Prim.leWord32#) a1 a2-{-# NOINLINE ltWord32# #-}-ltWord32# :: Word32# -> Word32# -> Int#-ltWord32# a1 a2 = (GHC.Prim.ltWord32#) a1 a2-{-# NOINLINE neWord32# #-}-neWord32# :: Word32# -> Word32# -> Int#-neWord32# a1 a2 = (GHC.Prim.neWord32#) a1 a2-{-# NOINLINE (+#) #-}-(+#) :: Int# -> Int# -> Int#-(+#) a1 a2 = (GHC.Prim.+#) a1 a2-{-# NOINLINE (-#) #-}-(-#) :: Int# -> Int# -> Int#-(-#) a1 a2 = (GHC.Prim.-#) a1 a2-{-# NOINLINE (*#) #-}-(*#) :: Int# -> Int# -> Int#-(*#) a1 a2 = (GHC.Prim.*#) a1 a2-{-# NOINLINE timesInt2# #-}-timesInt2# :: Int# -> Int# -> (# Int#,Int#,Int# #)-timesInt2# a1 a2 = (GHC.Prim.timesInt2#) a1 a2-{-# NOINLINE mulIntMayOflo# #-}-mulIntMayOflo# :: Int# -> Int# -> Int#-mulIntMayOflo# a1 a2 = (GHC.Prim.mulIntMayOflo#) a1 a2-{-# NOINLINE quotInt# #-}-quotInt# :: Int# -> Int# -> Int#-quotInt# a1 a2 = (GHC.Prim.quotInt#) a1 a2-{-# NOINLINE remInt# #-}-remInt# :: Int# -> Int# -> Int#-remInt# a1 a2 = (GHC.Prim.remInt#) a1 a2-{-# NOINLINE quotRemInt# #-}-quotRemInt# :: Int# -> Int# -> (# Int#,Int# #)-quotRemInt# a1 a2 = (GHC.Prim.quotRemInt#) a1 a2-{-# NOINLINE andI# #-}-andI# :: Int# -> Int# -> Int#-andI# a1 a2 = (GHC.Prim.andI#) a1 a2-{-# NOINLINE orI# #-}-orI# :: Int# -> Int# -> Int#-orI# a1 a2 = (GHC.Prim.orI#) a1 a2-{-# NOINLINE xorI# #-}-xorI# :: Int# -> Int# -> Int#-xorI# a1 a2 = (GHC.Prim.xorI#) a1 a2-{-# NOINLINE notI# #-}-notI# :: Int# -> Int#-notI# a1 = (GHC.Prim.notI#) a1-{-# NOINLINE negateInt# #-}-negateInt# :: Int# -> Int#-negateInt# a1 = (GHC.Prim.negateInt#) a1-{-# NOINLINE addIntC# #-}-addIntC# :: Int# -> Int# -> (# Int#,Int# #)-addIntC# a1 a2 = (GHC.Prim.addIntC#) a1 a2-{-# NOINLINE subIntC# #-}-subIntC# :: Int# -> Int# -> (# Int#,Int# #)-subIntC# a1 a2 = (GHC.Prim.subIntC#) a1 a2-{-# NOINLINE (>#) #-}-(>#) :: Int# -> Int# -> Int#-(>#) a1 a2 = (GHC.Prim.>#) a1 a2-{-# NOINLINE (>=#) #-}-(>=#) :: Int# -> Int# -> Int#-(>=#) a1 a2 = (GHC.Prim.>=#) a1 a2-{-# NOINLINE (==#) #-}-(==#) :: Int# -> Int# -> Int#-(==#) a1 a2 = (GHC.Prim.==#) a1 a2-{-# NOINLINE (/=#) #-}-(/=#) :: Int# -> Int# -> Int#-(/=#) a1 a2 = (GHC.Prim./=#) a1 a2-{-# NOINLINE (<#) #-}-(<#) :: Int# -> Int# -> Int#-(<#) a1 a2 = (GHC.Prim.<#) a1 a2-{-# NOINLINE (<=#) #-}-(<=#) :: Int# -> Int# -> Int#-(<=#) a1 a2 = (GHC.Prim.<=#) a1 a2-{-# NOINLINE chr# #-}-chr# :: Int# -> Char#-chr# a1 = (GHC.Prim.chr#) a1-{-# NOINLINE int2Word# #-}-int2Word# :: Int# -> Word#-int2Word# a1 = (GHC.Prim.int2Word#) a1-{-# NOINLINE int2Float# #-}-int2Float# :: Int# -> Float#-int2Float# a1 = (GHC.Prim.int2Float#) a1-{-# NOINLINE int2Double# #-}-int2Double# :: Int# -> Double#-int2Double# a1 = (GHC.Prim.int2Double#) a1-{-# NOINLINE word2Float# #-}-word2Float# :: Word# -> Float#-word2Float# a1 = (GHC.Prim.word2Float#) a1-{-# NOINLINE word2Double# #-}-word2Double# :: Word# -> Double#-word2Double# a1 = (GHC.Prim.word2Double#) a1-{-# NOINLINE uncheckedIShiftL# #-}-uncheckedIShiftL# :: Int# -> Int# -> Int#-uncheckedIShiftL# a1 a2 = (GHC.Prim.uncheckedIShiftL#) a1 a2-{-# NOINLINE uncheckedIShiftRA# #-}-uncheckedIShiftRA# :: Int# -> Int# -> Int#-uncheckedIShiftRA# a1 a2 = (GHC.Prim.uncheckedIShiftRA#) a1 a2-{-# NOINLINE uncheckedIShiftRL# #-}-uncheckedIShiftRL# :: Int# -> Int# -> Int#-uncheckedIShiftRL# a1 a2 = (GHC.Prim.uncheckedIShiftRL#) a1 a2-{-# NOINLINE plusWord# #-}-plusWord# :: Word# -> Word# -> Word#-plusWord# a1 a2 = (GHC.Prim.plusWord#) a1 a2-{-# NOINLINE addWordC# #-}-addWordC# :: Word# -> Word# -> (# Word#,Int# #)-addWordC# a1 a2 = (GHC.Prim.addWordC#) a1 a2-{-# NOINLINE subWordC# #-}-subWordC# :: Word# -> Word# -> (# Word#,Int# #)-subWordC# a1 a2 = (GHC.Prim.subWordC#) a1 a2-{-# NOINLINE plusWord2# #-}-plusWord2# :: Word# -> Word# -> (# Word#,Word# #)-plusWord2# a1 a2 = (GHC.Prim.plusWord2#) a1 a2-{-# NOINLINE minusWord# #-}-minusWord# :: Word# -> Word# -> Word#-minusWord# a1 a2 = (GHC.Prim.minusWord#) a1 a2-{-# NOINLINE timesWord# #-}-timesWord# :: Word# -> Word# -> Word#-timesWord# a1 a2 = (GHC.Prim.timesWord#) a1 a2-{-# NOINLINE timesWord2# #-}-timesWord2# :: Word# -> Word# -> (# Word#,Word# #)-timesWord2# a1 a2 = (GHC.Prim.timesWord2#) a1 a2-{-# NOINLINE quotWord# #-}-quotWord# :: Word# -> Word# -> Word#-quotWord# a1 a2 = (GHC.Prim.quotWord#) a1 a2-{-# NOINLINE remWord# #-}-remWord# :: Word# -> Word# -> Word#-remWord# a1 a2 = (GHC.Prim.remWord#) a1 a2-{-# NOINLINE quotRemWord# #-}-quotRemWord# :: Word# -> Word# -> (# Word#,Word# #)-quotRemWord# a1 a2 = (GHC.Prim.quotRemWord#) a1 a2-{-# NOINLINE quotRemWord2# #-}-quotRemWord2# :: Word# -> Word# -> Word# -> (# Word#,Word# #)-quotRemWord2# a1 a2 a3 = (GHC.Prim.quotRemWord2#) a1 a2 a3-{-# NOINLINE and# #-}-and# :: Word# -> Word# -> Word#-and# a1 a2 = (GHC.Prim.and#) a1 a2-{-# NOINLINE or# #-}-or# :: Word# -> Word# -> Word#-or# a1 a2 = (GHC.Prim.or#) a1 a2-{-# NOINLINE xor# #-}-xor# :: Word# -> Word# -> Word#-xor# a1 a2 = (GHC.Prim.xor#) a1 a2-{-# NOINLINE not# #-}-not# :: Word# -> Word#-not# a1 = (GHC.Prim.not#) a1-{-# NOINLINE uncheckedShiftL# #-}-uncheckedShiftL# :: Word# -> Int# -> Word#-uncheckedShiftL# a1 a2 = (GHC.Prim.uncheckedShiftL#) a1 a2-{-# NOINLINE uncheckedShiftRL# #-}-uncheckedShiftRL# :: Word# -> Int# -> Word#-uncheckedShiftRL# a1 a2 = (GHC.Prim.uncheckedShiftRL#) a1 a2-{-# NOINLINE word2Int# #-}-word2Int# :: Word# -> Int#-word2Int# a1 = (GHC.Prim.word2Int#) a1-{-# NOINLINE gtWord# #-}-gtWord# :: Word# -> Word# -> Int#-gtWord# a1 a2 = (GHC.Prim.gtWord#) a1 a2-{-# NOINLINE geWord# #-}-geWord# :: Word# -> Word# -> Int#-geWord# a1 a2 = (GHC.Prim.geWord#) a1 a2-{-# NOINLINE eqWord# #-}-eqWord# :: Word# -> Word# -> Int#-eqWord# a1 a2 = (GHC.Prim.eqWord#) a1 a2-{-# NOINLINE neWord# #-}-neWord# :: Word# -> Word# -> Int#-neWord# a1 a2 = (GHC.Prim.neWord#) a1 a2-{-# NOINLINE ltWord# #-}-ltWord# :: Word# -> Word# -> Int#-ltWord# a1 a2 = (GHC.Prim.ltWord#) a1 a2-{-# NOINLINE leWord# #-}-leWord# :: Word# -> Word# -> Int#-leWord# a1 a2 = (GHC.Prim.leWord#) a1 a2-{-# NOINLINE popCnt8# #-}-popCnt8# :: Word# -> Word#-popCnt8# a1 = (GHC.Prim.popCnt8#) a1-{-# NOINLINE popCnt16# #-}-popCnt16# :: Word# -> Word#-popCnt16# a1 = (GHC.Prim.popCnt16#) a1-{-# NOINLINE popCnt32# #-}-popCnt32# :: Word# -> Word#-popCnt32# a1 = (GHC.Prim.popCnt32#) a1-{-# NOINLINE popCnt64# #-}-popCnt64# :: Word# -> Word#-popCnt64# a1 = (GHC.Prim.popCnt64#) a1-{-# NOINLINE popCnt# #-}-popCnt# :: Word# -> Word#-popCnt# a1 = (GHC.Prim.popCnt#) a1-{-# NOINLINE pdep8# #-}-pdep8# :: Word# -> Word# -> Word#-pdep8# a1 a2 = (GHC.Prim.pdep8#) a1 a2-{-# NOINLINE pdep16# #-}-pdep16# :: Word# -> Word# -> Word#-pdep16# a1 a2 = (GHC.Prim.pdep16#) a1 a2-{-# NOINLINE pdep32# #-}-pdep32# :: Word# -> Word# -> Word#-pdep32# a1 a2 = (GHC.Prim.pdep32#) a1 a2-{-# NOINLINE pdep64# #-}-pdep64# :: Word# -> Word# -> Word#-pdep64# a1 a2 = (GHC.Prim.pdep64#) a1 a2-{-# NOINLINE pdep# #-}-pdep# :: Word# -> Word# -> Word#-pdep# a1 a2 = (GHC.Prim.pdep#) a1 a2-{-# NOINLINE pext8# #-}-pext8# :: Word# -> Word# -> Word#-pext8# a1 a2 = (GHC.Prim.pext8#) a1 a2-{-# NOINLINE pext16# #-}-pext16# :: Word# -> Word# -> Word#-pext16# a1 a2 = (GHC.Prim.pext16#) a1 a2-{-# NOINLINE pext32# #-}-pext32# :: Word# -> Word# -> Word#-pext32# a1 a2 = (GHC.Prim.pext32#) a1 a2-{-# NOINLINE pext64# #-}-pext64# :: Word# -> Word# -> Word#-pext64# a1 a2 = (GHC.Prim.pext64#) a1 a2-{-# NOINLINE pext# #-}-pext# :: Word# -> Word# -> Word#-pext# a1 a2 = (GHC.Prim.pext#) a1 a2-{-# NOINLINE clz8# #-}-clz8# :: Word# -> Word#-clz8# a1 = (GHC.Prim.clz8#) a1-{-# NOINLINE clz16# #-}-clz16# :: Word# -> Word#-clz16# a1 = (GHC.Prim.clz16#) a1-{-# NOINLINE clz32# #-}-clz32# :: Word# -> Word#-clz32# a1 = (GHC.Prim.clz32#) a1-{-# NOINLINE clz64# #-}-clz64# :: Word# -> Word#-clz64# a1 = (GHC.Prim.clz64#) a1-{-# NOINLINE clz# #-}-clz# :: Word# -> Word#-clz# a1 = (GHC.Prim.clz#) a1-{-# NOINLINE ctz8# #-}-ctz8# :: Word# -> Word#-ctz8# a1 = (GHC.Prim.ctz8#) a1-{-# NOINLINE ctz16# #-}-ctz16# :: Word# -> Word#-ctz16# a1 = (GHC.Prim.ctz16#) a1-{-# NOINLINE ctz32# #-}-ctz32# :: Word# -> Word#-ctz32# a1 = (GHC.Prim.ctz32#) a1-{-# NOINLINE ctz64# #-}-ctz64# :: Word# -> Word#-ctz64# a1 = (GHC.Prim.ctz64#) a1-{-# NOINLINE ctz# #-}-ctz# :: Word# -> Word#-ctz# a1 = (GHC.Prim.ctz#) a1-{-# NOINLINE byteSwap16# #-}-byteSwap16# :: Word# -> Word#-byteSwap16# a1 = (GHC.Prim.byteSwap16#) a1-{-# NOINLINE byteSwap32# #-}-byteSwap32# :: Word# -> Word#-byteSwap32# a1 = (GHC.Prim.byteSwap32#) a1-{-# NOINLINE byteSwap64# #-}-byteSwap64# :: Word# -> Word#-byteSwap64# a1 = (GHC.Prim.byteSwap64#) a1-{-# NOINLINE byteSwap# #-}-byteSwap# :: Word# -> Word#-byteSwap# a1 = (GHC.Prim.byteSwap#) a1-{-# NOINLINE bitReverse8# #-}-bitReverse8# :: Word# -> Word#-bitReverse8# a1 = (GHC.Prim.bitReverse8#) a1-{-# NOINLINE bitReverse16# #-}-bitReverse16# :: Word# -> Word#-bitReverse16# a1 = (GHC.Prim.bitReverse16#) a1-{-# NOINLINE bitReverse32# #-}-bitReverse32# :: Word# -> Word#-bitReverse32# a1 = (GHC.Prim.bitReverse32#) a1-{-# NOINLINE bitReverse64# #-}-bitReverse64# :: Word# -> Word#-bitReverse64# a1 = (GHC.Prim.bitReverse64#) a1-{-# NOINLINE bitReverse# #-}-bitReverse# :: Word# -> Word#-bitReverse# a1 = (GHC.Prim.bitReverse#) a1-{-# NOINLINE narrow8Int# #-}-narrow8Int# :: Int# -> Int#-narrow8Int# a1 = (GHC.Prim.narrow8Int#) a1-{-# NOINLINE narrow16Int# #-}-narrow16Int# :: Int# -> Int#-narrow16Int# a1 = (GHC.Prim.narrow16Int#) a1-{-# NOINLINE narrow32Int# #-}-narrow32Int# :: Int# -> Int#-narrow32Int# a1 = (GHC.Prim.narrow32Int#) a1-{-# NOINLINE narrow8Word# #-}-narrow8Word# :: Word# -> Word#-narrow8Word# a1 = (GHC.Prim.narrow8Word#) a1-{-# NOINLINE narrow16Word# #-}-narrow16Word# :: Word# -> Word#-narrow16Word# a1 = (GHC.Prim.narrow16Word#) a1-{-# NOINLINE narrow32Word# #-}-narrow32Word# :: Word# -> Word#-narrow32Word# a1 = (GHC.Prim.narrow32Word#) a1-{-# NOINLINE (>##) #-}-(>##) :: Double# -> Double# -> Int#-(>##) a1 a2 = (GHC.Prim.>##) a1 a2-{-# NOINLINE (>=##) #-}-(>=##) :: Double# -> Double# -> Int#-(>=##) a1 a2 = (GHC.Prim.>=##) a1 a2-{-# NOINLINE (==##) #-}-(==##) :: Double# -> Double# -> Int#-(==##) a1 a2 = (GHC.Prim.==##) a1 a2-{-# NOINLINE (/=##) #-}-(/=##) :: Double# -> Double# -> Int#-(/=##) a1 a2 = (GHC.Prim./=##) a1 a2-{-# NOINLINE (<##) #-}-(<##) :: Double# -> Double# -> Int#-(<##) a1 a2 = (GHC.Prim.<##) a1 a2-{-# NOINLINE (<=##) #-}-(<=##) :: Double# -> Double# -> Int#-(<=##) a1 a2 = (GHC.Prim.<=##) a1 a2-{-# NOINLINE (+##) #-}-(+##) :: Double# -> Double# -> Double#-(+##) a1 a2 = (GHC.Prim.+##) a1 a2-{-# NOINLINE (-##) #-}-(-##) :: Double# -> Double# -> Double#-(-##) a1 a2 = (GHC.Prim.-##) a1 a2-{-# NOINLINE (*##) #-}-(*##) :: Double# -> Double# -> Double#-(*##) a1 a2 = (GHC.Prim.*##) a1 a2-{-# NOINLINE (/##) #-}-(/##) :: Double# -> Double# -> Double#-(/##) a1 a2 = (GHC.Prim./##) a1 a2-{-# NOINLINE negateDouble# #-}-negateDouble# :: Double# -> Double#-negateDouble# a1 = (GHC.Prim.negateDouble#) a1-{-# NOINLINE fabsDouble# #-}-fabsDouble# :: Double# -> Double#-fabsDouble# a1 = (GHC.Prim.fabsDouble#) a1-{-# NOINLINE double2Int# #-}-double2Int# :: Double# -> Int#-double2Int# a1 = (GHC.Prim.double2Int#) a1-{-# NOINLINE double2Float# #-}-double2Float# :: Double# -> Float#-double2Float# a1 = (GHC.Prim.double2Float#) a1-{-# NOINLINE expDouble# #-}-expDouble# :: Double# -> Double#-expDouble# a1 = (GHC.Prim.expDouble#) a1-{-# NOINLINE expm1Double# #-}-expm1Double# :: Double# -> Double#-expm1Double# a1 = (GHC.Prim.expm1Double#) a1-{-# NOINLINE logDouble# #-}-logDouble# :: Double# -> Double#-logDouble# a1 = (GHC.Prim.logDouble#) a1-{-# NOINLINE log1pDouble# #-}-log1pDouble# :: Double# -> Double#-log1pDouble# a1 = (GHC.Prim.log1pDouble#) a1-{-# NOINLINE sqrtDouble# #-}-sqrtDouble# :: Double# -> Double#-sqrtDouble# a1 = (GHC.Prim.sqrtDouble#) a1-{-# NOINLINE sinDouble# #-}-sinDouble# :: Double# -> Double#-sinDouble# a1 = (GHC.Prim.sinDouble#) a1-{-# NOINLINE cosDouble# #-}-cosDouble# :: Double# -> Double#-cosDouble# a1 = (GHC.Prim.cosDouble#) a1-{-# NOINLINE tanDouble# #-}-tanDouble# :: Double# -> Double#-tanDouble# a1 = (GHC.Prim.tanDouble#) a1-{-# NOINLINE asinDouble# #-}-asinDouble# :: Double# -> Double#-asinDouble# a1 = (GHC.Prim.asinDouble#) a1-{-# NOINLINE acosDouble# #-}-acosDouble# :: Double# -> Double#-acosDouble# a1 = (GHC.Prim.acosDouble#) a1-{-# NOINLINE atanDouble# #-}-atanDouble# :: Double# -> Double#-atanDouble# a1 = (GHC.Prim.atanDouble#) a1-{-# NOINLINE sinhDouble# #-}-sinhDouble# :: Double# -> Double#-sinhDouble# a1 = (GHC.Prim.sinhDouble#) a1-{-# NOINLINE coshDouble# #-}-coshDouble# :: Double# -> Double#-coshDouble# a1 = (GHC.Prim.coshDouble#) a1-{-# NOINLINE tanhDouble# #-}-tanhDouble# :: Double# -> Double#-tanhDouble# a1 = (GHC.Prim.tanhDouble#) a1-{-# NOINLINE asinhDouble# #-}-asinhDouble# :: Double# -> Double#-asinhDouble# a1 = (GHC.Prim.asinhDouble#) a1-{-# NOINLINE acoshDouble# #-}-acoshDouble# :: Double# -> Double#-acoshDouble# a1 = (GHC.Prim.acoshDouble#) a1-{-# NOINLINE atanhDouble# #-}-atanhDouble# :: Double# -> Double#-atanhDouble# a1 = (GHC.Prim.atanhDouble#) a1-{-# NOINLINE (**##) #-}-(**##) :: Double# -> Double# -> Double#-(**##) a1 a2 = (GHC.Prim.**##) a1 a2-{-# NOINLINE decodeDouble_2Int# #-}-decodeDouble_2Int# :: Double# -> (# Int#,Word#,Word#,Int# #)-decodeDouble_2Int# a1 = (GHC.Prim.decodeDouble_2Int#) a1-{-# NOINLINE decodeDouble_Int64# #-}-decodeDouble_Int64# :: Double# -> (# Int#,Int# #)-decodeDouble_Int64# a1 = (GHC.Prim.decodeDouble_Int64#) a1-{-# NOINLINE gtFloat# #-}-gtFloat# :: Float# -> Float# -> Int#-gtFloat# a1 a2 = (GHC.Prim.gtFloat#) a1 a2-{-# NOINLINE geFloat# #-}-geFloat# :: Float# -> Float# -> Int#-geFloat# a1 a2 = (GHC.Prim.geFloat#) a1 a2-{-# NOINLINE eqFloat# #-}-eqFloat# :: Float# -> Float# -> Int#-eqFloat# a1 a2 = (GHC.Prim.eqFloat#) a1 a2-{-# NOINLINE neFloat# #-}-neFloat# :: Float# -> Float# -> Int#-neFloat# a1 a2 = (GHC.Prim.neFloat#) a1 a2-{-# NOINLINE ltFloat# #-}-ltFloat# :: Float# -> Float# -> Int#-ltFloat# a1 a2 = (GHC.Prim.ltFloat#) a1 a2-{-# NOINLINE leFloat# #-}-leFloat# :: Float# -> Float# -> Int#-leFloat# a1 a2 = (GHC.Prim.leFloat#) a1 a2-{-# NOINLINE plusFloat# #-}-plusFloat# :: Float# -> Float# -> Float#-plusFloat# a1 a2 = (GHC.Prim.plusFloat#) a1 a2-{-# NOINLINE minusFloat# #-}-minusFloat# :: Float# -> Float# -> Float#-minusFloat# a1 a2 = (GHC.Prim.minusFloat#) a1 a2-{-# NOINLINE timesFloat# #-}-timesFloat# :: Float# -> Float# -> Float#-timesFloat# a1 a2 = (GHC.Prim.timesFloat#) a1 a2-{-# NOINLINE divideFloat# #-}-divideFloat# :: Float# -> Float# -> Float#-divideFloat# a1 a2 = (GHC.Prim.divideFloat#) a1 a2-{-# NOINLINE negateFloat# #-}-negateFloat# :: Float# -> Float#-negateFloat# a1 = (GHC.Prim.negateFloat#) a1-{-# NOINLINE fabsFloat# #-}-fabsFloat# :: Float# -> Float#-fabsFloat# a1 = (GHC.Prim.fabsFloat#) a1-{-# NOINLINE float2Int# #-}-float2Int# :: Float# -> Int#-float2Int# a1 = (GHC.Prim.float2Int#) a1-{-# NOINLINE expFloat# #-}-expFloat# :: Float# -> Float#-expFloat# a1 = (GHC.Prim.expFloat#) a1-{-# NOINLINE expm1Float# #-}-expm1Float# :: Float# -> Float#-expm1Float# a1 = (GHC.Prim.expm1Float#) a1-{-# NOINLINE logFloat# #-}-logFloat# :: Float# -> Float#-logFloat# a1 = (GHC.Prim.logFloat#) a1-{-# NOINLINE log1pFloat# #-}-log1pFloat# :: Float# -> Float#-log1pFloat# a1 = (GHC.Prim.log1pFloat#) a1-{-# NOINLINE sqrtFloat# #-}-sqrtFloat# :: Float# -> Float#-sqrtFloat# a1 = (GHC.Prim.sqrtFloat#) a1-{-# NOINLINE sinFloat# #-}-sinFloat# :: Float# -> Float#-sinFloat# a1 = (GHC.Prim.sinFloat#) a1-{-# NOINLINE cosFloat# #-}-cosFloat# :: Float# -> Float#-cosFloat# a1 = (GHC.Prim.cosFloat#) a1-{-# NOINLINE tanFloat# #-}-tanFloat# :: Float# -> Float#-tanFloat# a1 = (GHC.Prim.tanFloat#) a1-{-# NOINLINE asinFloat# #-}-asinFloat# :: Float# -> Float#-asinFloat# a1 = (GHC.Prim.asinFloat#) a1-{-# NOINLINE acosFloat# #-}-acosFloat# :: Float# -> Float#-acosFloat# a1 = (GHC.Prim.acosFloat#) a1-{-# NOINLINE atanFloat# #-}-atanFloat# :: Float# -> Float#-atanFloat# a1 = (GHC.Prim.atanFloat#) a1-{-# NOINLINE sinhFloat# #-}-sinhFloat# :: Float# -> Float#-sinhFloat# a1 = (GHC.Prim.sinhFloat#) a1-{-# NOINLINE coshFloat# #-}-coshFloat# :: Float# -> Float#-coshFloat# a1 = (GHC.Prim.coshFloat#) a1-{-# NOINLINE tanhFloat# #-}-tanhFloat# :: Float# -> Float#-tanhFloat# a1 = (GHC.Prim.tanhFloat#) a1-{-# NOINLINE asinhFloat# #-}-asinhFloat# :: Float# -> Float#-asinhFloat# a1 = (GHC.Prim.asinhFloat#) a1-{-# NOINLINE acoshFloat# #-}-acoshFloat# :: Float# -> Float#-acoshFloat# a1 = (GHC.Prim.acoshFloat#) a1-{-# NOINLINE atanhFloat# #-}-atanhFloat# :: Float# -> Float#-atanhFloat# a1 = (GHC.Prim.atanhFloat#) a1-{-# NOINLINE powerFloat# #-}-powerFloat# :: Float# -> Float# -> Float#-powerFloat# a1 a2 = (GHC.Prim.powerFloat#) a1 a2-{-# NOINLINE float2Double# #-}-float2Double# :: Float# -> Double#-float2Double# a1 = (GHC.Prim.float2Double#) a1-{-# NOINLINE decodeFloat_Int# #-}-decodeFloat_Int# :: Float# -> (# Int#,Int# #)-decodeFloat_Int# a1 = (GHC.Prim.decodeFloat_Int#) a1-{-# NOINLINE newArray# #-}-newArray# :: Int# -> a -> State# s -> (# State# s,MutableArray# s a #)-newArray# a1 a2 a3 = (GHC.Prim.newArray#) a1 a2 a3-{-# NOINLINE sameMutableArray# #-}-sameMutableArray# :: MutableArray# s a -> MutableArray# s a -> Int#-sameMutableArray# a1 a2 = (GHC.Prim.sameMutableArray#) a1 a2-{-# NOINLINE readArray# #-}-readArray# :: MutableArray# s a -> Int# -> State# s -> (# State# s,a #)-readArray# a1 a2 a3 = (GHC.Prim.readArray#) a1 a2 a3-{-# NOINLINE writeArray# #-}-writeArray# :: MutableArray# s a -> Int# -> a -> State# s -> State# s-writeArray# a1 a2 a3 a4 = (GHC.Prim.writeArray#) a1 a2 a3 a4-{-# NOINLINE sizeofArray# #-}-sizeofArray# :: Array# a -> Int#-sizeofArray# a1 = (GHC.Prim.sizeofArray#) a1-{-# NOINLINE sizeofMutableArray# #-}-sizeofMutableArray# :: MutableArray# s a -> Int#-sizeofMutableArray# a1 = (GHC.Prim.sizeofMutableArray#) a1-{-# NOINLINE indexArray# #-}-indexArray# :: Array# a -> Int# -> (# a #)-indexArray# a1 a2 = (GHC.Prim.indexArray#) a1 a2-{-# NOINLINE unsafeFreezeArray# #-}-unsafeFreezeArray# :: MutableArray# s a -> State# s -> (# State# s,Array# a #)-unsafeFreezeArray# a1 a2 = (GHC.Prim.unsafeFreezeArray#) a1 a2-{-# NOINLINE unsafeThawArray# #-}-unsafeThawArray# :: Array# a -> State# s -> (# State# s,MutableArray# s a #)-unsafeThawArray# a1 a2 = (GHC.Prim.unsafeThawArray#) a1 a2-{-# NOINLINE copyArray# #-}-copyArray# :: Array# a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s-copyArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copyArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE copyMutableArray# #-}-copyMutableArray# :: MutableArray# s a -> Int# -> MutableArray# s a -> Int# -> Int# -> State# s -> State# s-copyMutableArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copyMutableArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE cloneArray# #-}-cloneArray# :: Array# a -> Int# -> Int# -> Array# a-cloneArray# a1 a2 a3 = (GHC.Prim.cloneArray#) a1 a2 a3-{-# NOINLINE cloneMutableArray# #-}-cloneMutableArray# :: MutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,MutableArray# s a #)-cloneMutableArray# a1 a2 a3 a4 = (GHC.Prim.cloneMutableArray#) a1 a2 a3 a4-{-# NOINLINE freezeArray# #-}-freezeArray# :: MutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,Array# a #)-freezeArray# a1 a2 a3 a4 = (GHC.Prim.freezeArray#) a1 a2 a3 a4-{-# NOINLINE thawArray# #-}-thawArray# :: Array# a -> Int# -> Int# -> State# s -> (# State# s,MutableArray# s a #)-thawArray# a1 a2 a3 a4 = (GHC.Prim.thawArray#) a1 a2 a3 a4-{-# NOINLINE casArray# #-}-casArray# :: MutableArray# s a -> Int# -> a -> a -> State# s -> (# State# s,Int#,a #)-casArray# a1 a2 a3 a4 a5 = (GHC.Prim.casArray#) a1 a2 a3 a4 a5-{-# NOINLINE newSmallArray# #-}-newSmallArray# :: Int# -> a -> State# s -> (# State# s,SmallMutableArray# s a #)-newSmallArray# a1 a2 a3 = (GHC.Prim.newSmallArray#) a1 a2 a3-{-# NOINLINE sameSmallMutableArray# #-}-sameSmallMutableArray# :: SmallMutableArray# s a -> SmallMutableArray# s a -> Int#-sameSmallMutableArray# a1 a2 = (GHC.Prim.sameSmallMutableArray#) a1 a2-{-# NOINLINE shrinkSmallMutableArray# #-}-shrinkSmallMutableArray# :: SmallMutableArray# s a -> Int# -> State# s -> State# s-shrinkSmallMutableArray# a1 a2 a3 = (GHC.Prim.shrinkSmallMutableArray#) a1 a2 a3-{-# NOINLINE readSmallArray# #-}-readSmallArray# :: SmallMutableArray# s a -> Int# -> State# s -> (# State# s,a #)-readSmallArray# a1 a2 a3 = (GHC.Prim.readSmallArray#) a1 a2 a3-{-# NOINLINE writeSmallArray# #-}-writeSmallArray# :: SmallMutableArray# s a -> Int# -> a -> State# s -> State# s-writeSmallArray# a1 a2 a3 a4 = (GHC.Prim.writeSmallArray#) a1 a2 a3 a4-{-# NOINLINE sizeofSmallArray# #-}-sizeofSmallArray# :: SmallArray# a -> Int#-sizeofSmallArray# a1 = (GHC.Prim.sizeofSmallArray#) a1-{-# NOINLINE sizeofSmallMutableArray# #-}-sizeofSmallMutableArray# :: SmallMutableArray# s a -> Int#-sizeofSmallMutableArray# a1 = (GHC.Prim.sizeofSmallMutableArray#) a1-{-# NOINLINE getSizeofSmallMutableArray# #-}-getSizeofSmallMutableArray# :: SmallMutableArray# s a -> State# s -> (# State# s,Int# #)-getSizeofSmallMutableArray# a1 a2 = (GHC.Prim.getSizeofSmallMutableArray#) a1 a2-{-# NOINLINE indexSmallArray# #-}-indexSmallArray# :: SmallArray# a -> Int# -> (# a #)-indexSmallArray# a1 a2 = (GHC.Prim.indexSmallArray#) a1 a2-{-# NOINLINE unsafeFreezeSmallArray# #-}-unsafeFreezeSmallArray# :: SmallMutableArray# s a -> State# s -> (# State# s,SmallArray# a #)-unsafeFreezeSmallArray# a1 a2 = (GHC.Prim.unsafeFreezeSmallArray#) a1 a2-{-# NOINLINE unsafeThawSmallArray# #-}-unsafeThawSmallArray# :: SmallArray# a -> State# s -> (# State# s,SmallMutableArray# s a #)-unsafeThawSmallArray# a1 a2 = (GHC.Prim.unsafeThawSmallArray#) a1 a2-{-# NOINLINE copySmallArray# #-}-copySmallArray# :: SmallArray# a -> Int# -> SmallMutableArray# s a -> Int# -> Int# -> State# s -> State# s-copySmallArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copySmallArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE copySmallMutableArray# #-}-copySmallMutableArray# :: SmallMutableArray# s a -> Int# -> SmallMutableArray# s a -> Int# -> Int# -> State# s -> State# s-copySmallMutableArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copySmallMutableArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE cloneSmallArray# #-}-cloneSmallArray# :: SmallArray# a -> Int# -> Int# -> SmallArray# a-cloneSmallArray# a1 a2 a3 = (GHC.Prim.cloneSmallArray#) a1 a2 a3-{-# NOINLINE cloneSmallMutableArray# #-}-cloneSmallMutableArray# :: SmallMutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,SmallMutableArray# s a #)-cloneSmallMutableArray# a1 a2 a3 a4 = (GHC.Prim.cloneSmallMutableArray#) a1 a2 a3 a4-{-# NOINLINE freezeSmallArray# #-}-freezeSmallArray# :: SmallMutableArray# s a -> Int# -> Int# -> State# s -> (# State# s,SmallArray# a #)-freezeSmallArray# a1 a2 a3 a4 = (GHC.Prim.freezeSmallArray#) a1 a2 a3 a4-{-# NOINLINE thawSmallArray# #-}-thawSmallArray# :: SmallArray# a -> Int# -> Int# -> State# s -> (# State# s,SmallMutableArray# s a #)-thawSmallArray# a1 a2 a3 a4 = (GHC.Prim.thawSmallArray#) a1 a2 a3 a4-{-# NOINLINE casSmallArray# #-}-casSmallArray# :: SmallMutableArray# s a -> Int# -> a -> a -> State# s -> (# State# s,Int#,a #)-casSmallArray# a1 a2 a3 a4 a5 = (GHC.Prim.casSmallArray#) a1 a2 a3 a4 a5-{-# NOINLINE newByteArray# #-}-newByteArray# :: Int# -> State# s -> (# State# s,MutableByteArray# s #)-newByteArray# a1 a2 = (GHC.Prim.newByteArray#) a1 a2-{-# NOINLINE newPinnedByteArray# #-}-newPinnedByteArray# :: Int# -> State# s -> (# State# s,MutableByteArray# s #)-newPinnedByteArray# a1 a2 = (GHC.Prim.newPinnedByteArray#) a1 a2-{-# NOINLINE newAlignedPinnedByteArray# #-}-newAlignedPinnedByteArray# :: Int# -> Int# -> State# s -> (# State# s,MutableByteArray# s #)-newAlignedPinnedByteArray# a1 a2 a3 = (GHC.Prim.newAlignedPinnedByteArray#) a1 a2 a3-{-# NOINLINE isMutableByteArrayPinned# #-}-isMutableByteArrayPinned# :: MutableByteArray# s -> Int#-isMutableByteArrayPinned# a1 = (GHC.Prim.isMutableByteArrayPinned#) a1-{-# NOINLINE isByteArrayPinned# #-}-isByteArrayPinned# :: ByteArray# -> Int#-isByteArrayPinned# a1 = (GHC.Prim.isByteArrayPinned#) a1-{-# NOINLINE byteArrayContents# #-}-byteArrayContents# :: ByteArray# -> Addr#-byteArrayContents# a1 = (GHC.Prim.byteArrayContents#) a1-{-# NOINLINE mutableByteArrayContents# #-}-mutableByteArrayContents# :: MutableByteArray# s -> Addr#-mutableByteArrayContents# a1 = (GHC.Prim.mutableByteArrayContents#) a1-{-# NOINLINE sameMutableByteArray# #-}-sameMutableByteArray# :: MutableByteArray# s -> MutableByteArray# s -> Int#-sameMutableByteArray# a1 a2 = (GHC.Prim.sameMutableByteArray#) a1 a2-{-# NOINLINE shrinkMutableByteArray# #-}-shrinkMutableByteArray# :: MutableByteArray# s -> Int# -> State# s -> State# s-shrinkMutableByteArray# a1 a2 a3 = (GHC.Prim.shrinkMutableByteArray#) a1 a2 a3-{-# NOINLINE resizeMutableByteArray# #-}-resizeMutableByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,MutableByteArray# s #)-resizeMutableByteArray# a1 a2 a3 = (GHC.Prim.resizeMutableByteArray#) a1 a2 a3-{-# NOINLINE unsafeFreezeByteArray# #-}-unsafeFreezeByteArray# :: MutableByteArray# s -> State# s -> (# State# s,ByteArray# #)-unsafeFreezeByteArray# a1 a2 = (GHC.Prim.unsafeFreezeByteArray#) a1 a2-{-# NOINLINE sizeofByteArray# #-}-sizeofByteArray# :: ByteArray# -> Int#-sizeofByteArray# a1 = (GHC.Prim.sizeofByteArray#) a1-{-# NOINLINE sizeofMutableByteArray# #-}-sizeofMutableByteArray# :: MutableByteArray# s -> Int#-sizeofMutableByteArray# a1 = (GHC.Prim.sizeofMutableByteArray#) a1-{-# NOINLINE getSizeofMutableByteArray# #-}-getSizeofMutableByteArray# :: MutableByteArray# s -> State# s -> (# State# s,Int# #)-getSizeofMutableByteArray# a1 a2 = (GHC.Prim.getSizeofMutableByteArray#) a1 a2-{-# NOINLINE indexCharArray# #-}-indexCharArray# :: ByteArray# -> Int# -> Char#-indexCharArray# a1 a2 = (GHC.Prim.indexCharArray#) a1 a2-{-# NOINLINE indexWideCharArray# #-}-indexWideCharArray# :: ByteArray# -> Int# -> Char#-indexWideCharArray# a1 a2 = (GHC.Prim.indexWideCharArray#) a1 a2-{-# NOINLINE indexIntArray# #-}-indexIntArray# :: ByteArray# -> Int# -> Int#-indexIntArray# a1 a2 = (GHC.Prim.indexIntArray#) a1 a2-{-# NOINLINE indexWordArray# #-}-indexWordArray# :: ByteArray# -> Int# -> Word#-indexWordArray# a1 a2 = (GHC.Prim.indexWordArray#) a1 a2-{-# NOINLINE indexAddrArray# #-}-indexAddrArray# :: ByteArray# -> Int# -> Addr#-indexAddrArray# a1 a2 = (GHC.Prim.indexAddrArray#) a1 a2-{-# NOINLINE indexFloatArray# #-}-indexFloatArray# :: ByteArray# -> Int# -> Float#-indexFloatArray# a1 a2 = (GHC.Prim.indexFloatArray#) a1 a2-{-# NOINLINE indexDoubleArray# #-}-indexDoubleArray# :: ByteArray# -> Int# -> Double#-indexDoubleArray# a1 a2 = (GHC.Prim.indexDoubleArray#) a1 a2-{-# NOINLINE indexStablePtrArray# #-}-indexStablePtrArray# :: ByteArray# -> Int# -> StablePtr# a-indexStablePtrArray# a1 a2 = (GHC.Prim.indexStablePtrArray#) a1 a2-{-# NOINLINE indexInt8Array# #-}-indexInt8Array# :: ByteArray# -> Int# -> Int8#-indexInt8Array# a1 a2 = (GHC.Prim.indexInt8Array#) a1 a2-{-# NOINLINE indexInt16Array# #-}-indexInt16Array# :: ByteArray# -> Int# -> Int16#-indexInt16Array# a1 a2 = (GHC.Prim.indexInt16Array#) a1 a2-{-# NOINLINE indexInt32Array# #-}-indexInt32Array# :: ByteArray# -> Int# -> Int32#-indexInt32Array# a1 a2 = (GHC.Prim.indexInt32Array#) a1 a2-{-# NOINLINE indexInt64Array# #-}-indexInt64Array# :: ByteArray# -> Int# -> Int#-indexInt64Array# a1 a2 = (GHC.Prim.indexInt64Array#) a1 a2-{-# NOINLINE indexWord8Array# #-}-indexWord8Array# :: ByteArray# -> Int# -> Word8#-indexWord8Array# a1 a2 = (GHC.Prim.indexWord8Array#) a1 a2-{-# NOINLINE indexWord16Array# #-}-indexWord16Array# :: ByteArray# -> Int# -> Word16#-indexWord16Array# a1 a2 = (GHC.Prim.indexWord16Array#) a1 a2-{-# NOINLINE indexWord32Array# #-}-indexWord32Array# :: ByteArray# -> Int# -> Word32#-indexWord32Array# a1 a2 = (GHC.Prim.indexWord32Array#) a1 a2-{-# NOINLINE indexWord64Array# #-}-indexWord64Array# :: ByteArray# -> Int# -> Word#-indexWord64Array# a1 a2 = (GHC.Prim.indexWord64Array#) a1 a2-{-# NOINLINE indexWord8ArrayAsChar# #-}-indexWord8ArrayAsChar# :: ByteArray# -> Int# -> Char#-indexWord8ArrayAsChar# a1 a2 = (GHC.Prim.indexWord8ArrayAsChar#) a1 a2-{-# NOINLINE indexWord8ArrayAsWideChar# #-}-indexWord8ArrayAsWideChar# :: ByteArray# -> Int# -> Char#-indexWord8ArrayAsWideChar# a1 a2 = (GHC.Prim.indexWord8ArrayAsWideChar#) a1 a2-{-# NOINLINE indexWord8ArrayAsInt# #-}-indexWord8ArrayAsInt# :: ByteArray# -> Int# -> Int#-indexWord8ArrayAsInt# a1 a2 = (GHC.Prim.indexWord8ArrayAsInt#) a1 a2-{-# NOINLINE indexWord8ArrayAsWord# #-}-indexWord8ArrayAsWord# :: ByteArray# -> Int# -> Word#-indexWord8ArrayAsWord# a1 a2 = (GHC.Prim.indexWord8ArrayAsWord#) a1 a2-{-# NOINLINE indexWord8ArrayAsAddr# #-}-indexWord8ArrayAsAddr# :: ByteArray# -> Int# -> Addr#-indexWord8ArrayAsAddr# a1 a2 = (GHC.Prim.indexWord8ArrayAsAddr#) a1 a2-{-# NOINLINE indexWord8ArrayAsFloat# #-}-indexWord8ArrayAsFloat# :: ByteArray# -> Int# -> Float#-indexWord8ArrayAsFloat# a1 a2 = (GHC.Prim.indexWord8ArrayAsFloat#) a1 a2-{-# NOINLINE indexWord8ArrayAsDouble# #-}-indexWord8ArrayAsDouble# :: ByteArray# -> Int# -> Double#-indexWord8ArrayAsDouble# a1 a2 = (GHC.Prim.indexWord8ArrayAsDouble#) a1 a2-{-# NOINLINE indexWord8ArrayAsStablePtr# #-}-indexWord8ArrayAsStablePtr# :: ByteArray# -> Int# -> StablePtr# a-indexWord8ArrayAsStablePtr# a1 a2 = (GHC.Prim.indexWord8ArrayAsStablePtr#) a1 a2-{-# NOINLINE indexWord8ArrayAsInt16# #-}-indexWord8ArrayAsInt16# :: ByteArray# -> Int# -> Int16#-indexWord8ArrayAsInt16# a1 a2 = (GHC.Prim.indexWord8ArrayAsInt16#) a1 a2-{-# NOINLINE indexWord8ArrayAsInt32# #-}-indexWord8ArrayAsInt32# :: ByteArray# -> Int# -> Int32#-indexWord8ArrayAsInt32# a1 a2 = (GHC.Prim.indexWord8ArrayAsInt32#) a1 a2-{-# NOINLINE indexWord8ArrayAsInt64# #-}-indexWord8ArrayAsInt64# :: ByteArray# -> Int# -> Int#-indexWord8ArrayAsInt64# a1 a2 = (GHC.Prim.indexWord8ArrayAsInt64#) a1 a2-{-# NOINLINE indexWord8ArrayAsWord16# #-}-indexWord8ArrayAsWord16# :: ByteArray# -> Int# -> Word16#-indexWord8ArrayAsWord16# a1 a2 = (GHC.Prim.indexWord8ArrayAsWord16#) a1 a2-{-# NOINLINE indexWord8ArrayAsWord32# #-}-indexWord8ArrayAsWord32# :: ByteArray# -> Int# -> Word32#-indexWord8ArrayAsWord32# a1 a2 = (GHC.Prim.indexWord8ArrayAsWord32#) a1 a2-{-# NOINLINE indexWord8ArrayAsWord64# #-}-indexWord8ArrayAsWord64# :: ByteArray# -> Int# -> Word#-indexWord8ArrayAsWord64# a1 a2 = (GHC.Prim.indexWord8ArrayAsWord64#) a1 a2-{-# NOINLINE readCharArray# #-}-readCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)-readCharArray# a1 a2 a3 = (GHC.Prim.readCharArray#) a1 a2 a3-{-# NOINLINE readWideCharArray# #-}-readWideCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)-readWideCharArray# a1 a2 a3 = (GHC.Prim.readWideCharArray#) a1 a2 a3-{-# NOINLINE readIntArray# #-}-readIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)-readIntArray# a1 a2 a3 = (GHC.Prim.readIntArray#) a1 a2 a3-{-# NOINLINE readWordArray# #-}-readWordArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #)-readWordArray# a1 a2 a3 = (GHC.Prim.readWordArray#) a1 a2 a3-{-# NOINLINE readAddrArray# #-}-readAddrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Addr# #)-readAddrArray# a1 a2 a3 = (GHC.Prim.readAddrArray#) a1 a2 a3-{-# NOINLINE readFloatArray# #-}-readFloatArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Float# #)-readFloatArray# a1 a2 a3 = (GHC.Prim.readFloatArray#) a1 a2 a3-{-# NOINLINE readDoubleArray# #-}-readDoubleArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Double# #)-readDoubleArray# a1 a2 a3 = (GHC.Prim.readDoubleArray#) a1 a2 a3-{-# NOINLINE readStablePtrArray# #-}-readStablePtrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,StablePtr# a #)-readStablePtrArray# a1 a2 a3 = (GHC.Prim.readStablePtrArray#) a1 a2 a3-{-# NOINLINE readInt8Array# #-}-readInt8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8# #)-readInt8Array# a1 a2 a3 = (GHC.Prim.readInt8Array#) a1 a2 a3-{-# NOINLINE readInt16Array# #-}-readInt16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16# #)-readInt16Array# a1 a2 a3 = (GHC.Prim.readInt16Array#) a1 a2 a3-{-# NOINLINE readInt32Array# #-}-readInt32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32# #)-readInt32Array# a1 a2 a3 = (GHC.Prim.readInt32Array#) a1 a2 a3-{-# NOINLINE readInt64Array# #-}-readInt64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)-readInt64Array# a1 a2 a3 = (GHC.Prim.readInt64Array#) a1 a2 a3-{-# NOINLINE readWord8Array# #-}-readWord8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8# #)-readWord8Array# a1 a2 a3 = (GHC.Prim.readWord8Array#) a1 a2 a3-{-# NOINLINE readWord16Array# #-}-readWord16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16# #)-readWord16Array# a1 a2 a3 = (GHC.Prim.readWord16Array#) a1 a2 a3-{-# NOINLINE readWord32Array# #-}-readWord32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32# #)-readWord32Array# a1 a2 a3 = (GHC.Prim.readWord32Array#) a1 a2 a3-{-# NOINLINE readWord64Array# #-}-readWord64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #)-readWord64Array# a1 a2 a3 = (GHC.Prim.readWord64Array#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsChar# #-}-readWord8ArrayAsChar# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)-readWord8ArrayAsChar# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsChar#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsWideChar# #-}-readWord8ArrayAsWideChar# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)-readWord8ArrayAsWideChar# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsWideChar#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsInt# #-}-readWord8ArrayAsInt# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)-readWord8ArrayAsInt# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsInt#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsWord# #-}-readWord8ArrayAsWord# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #)-readWord8ArrayAsWord# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsWord#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsAddr# #-}-readWord8ArrayAsAddr# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Addr# #)-readWord8ArrayAsAddr# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsAddr#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsFloat# #-}-readWord8ArrayAsFloat# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Float# #)-readWord8ArrayAsFloat# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsFloat#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsDouble# #-}-readWord8ArrayAsDouble# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Double# #)-readWord8ArrayAsDouble# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsDouble#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsStablePtr# #-}-readWord8ArrayAsStablePtr# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,StablePtr# a #)-readWord8ArrayAsStablePtr# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsStablePtr#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsInt16# #-}-readWord8ArrayAsInt16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16# #)-readWord8ArrayAsInt16# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsInt16#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsInt32# #-}-readWord8ArrayAsInt32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32# #)-readWord8ArrayAsInt32# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsInt32#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsInt64# #-}-readWord8ArrayAsInt64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)-readWord8ArrayAsInt64# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsInt64#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsWord16# #-}-readWord8ArrayAsWord16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16# #)-readWord8ArrayAsWord16# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsWord16#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsWord32# #-}-readWord8ArrayAsWord32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32# #)-readWord8ArrayAsWord32# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsWord32#) a1 a2 a3-{-# NOINLINE readWord8ArrayAsWord64# #-}-readWord8ArrayAsWord64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #)-readWord8ArrayAsWord64# a1 a2 a3 = (GHC.Prim.readWord8ArrayAsWord64#) a1 a2 a3-{-# NOINLINE writeCharArray# #-}-writeCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s-writeCharArray# a1 a2 a3 a4 = (GHC.Prim.writeCharArray#) a1 a2 a3 a4-{-# NOINLINE writeWideCharArray# #-}-writeWideCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s-writeWideCharArray# a1 a2 a3 a4 = (GHC.Prim.writeWideCharArray#) a1 a2 a3 a4-{-# NOINLINE writeIntArray# #-}-writeIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-writeIntArray# a1 a2 a3 a4 = (GHC.Prim.writeIntArray#) a1 a2 a3 a4-{-# NOINLINE writeWordArray# #-}-writeWordArray# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s-writeWordArray# a1 a2 a3 a4 = (GHC.Prim.writeWordArray#) a1 a2 a3 a4-{-# NOINLINE writeAddrArray# #-}-writeAddrArray# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s-writeAddrArray# a1 a2 a3 a4 = (GHC.Prim.writeAddrArray#) a1 a2 a3 a4-{-# NOINLINE writeFloatArray# #-}-writeFloatArray# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s-writeFloatArray# a1 a2 a3 a4 = (GHC.Prim.writeFloatArray#) a1 a2 a3 a4-{-# NOINLINE writeDoubleArray# #-}-writeDoubleArray# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s-writeDoubleArray# a1 a2 a3 a4 = (GHC.Prim.writeDoubleArray#) a1 a2 a3 a4-{-# NOINLINE writeStablePtrArray# #-}-writeStablePtrArray# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s-writeStablePtrArray# a1 a2 a3 a4 = (GHC.Prim.writeStablePtrArray#) a1 a2 a3 a4-{-# NOINLINE writeInt8Array# #-}-writeInt8Array# :: MutableByteArray# s -> Int# -> Int8# -> State# s -> State# s-writeInt8Array# a1 a2 a3 a4 = (GHC.Prim.writeInt8Array#) a1 a2 a3 a4-{-# NOINLINE writeInt16Array# #-}-writeInt16Array# :: MutableByteArray# s -> Int# -> Int16# -> State# s -> State# s-writeInt16Array# a1 a2 a3 a4 = (GHC.Prim.writeInt16Array#) a1 a2 a3 a4-{-# NOINLINE writeInt32Array# #-}-writeInt32Array# :: MutableByteArray# s -> Int# -> Int32# -> State# s -> State# s-writeInt32Array# a1 a2 a3 a4 = (GHC.Prim.writeInt32Array#) a1 a2 a3 a4-{-# NOINLINE writeInt64Array# #-}-writeInt64Array# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-writeInt64Array# a1 a2 a3 a4 = (GHC.Prim.writeInt64Array#) a1 a2 a3 a4-{-# NOINLINE writeWord8Array# #-}-writeWord8Array# :: MutableByteArray# s -> Int# -> Word8# -> State# s -> State# s-writeWord8Array# a1 a2 a3 a4 = (GHC.Prim.writeWord8Array#) a1 a2 a3 a4-{-# NOINLINE writeWord16Array# #-}-writeWord16Array# :: MutableByteArray# s -> Int# -> Word16# -> State# s -> State# s-writeWord16Array# a1 a2 a3 a4 = (GHC.Prim.writeWord16Array#) a1 a2 a3 a4-{-# NOINLINE writeWord32Array# #-}-writeWord32Array# :: MutableByteArray# s -> Int# -> Word32# -> State# s -> State# s-writeWord32Array# a1 a2 a3 a4 = (GHC.Prim.writeWord32Array#) a1 a2 a3 a4-{-# NOINLINE writeWord64Array# #-}-writeWord64Array# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s-writeWord64Array# a1 a2 a3 a4 = (GHC.Prim.writeWord64Array#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsChar# #-}-writeWord8ArrayAsChar# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s-writeWord8ArrayAsChar# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsChar#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsWideChar# #-}-writeWord8ArrayAsWideChar# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s-writeWord8ArrayAsWideChar# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsWideChar#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsInt# #-}-writeWord8ArrayAsInt# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-writeWord8ArrayAsInt# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsInt#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsWord# #-}-writeWord8ArrayAsWord# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s-writeWord8ArrayAsWord# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsWord#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsAddr# #-}-writeWord8ArrayAsAddr# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s-writeWord8ArrayAsAddr# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsAddr#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsFloat# #-}-writeWord8ArrayAsFloat# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s-writeWord8ArrayAsFloat# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsFloat#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsDouble# #-}-writeWord8ArrayAsDouble# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s-writeWord8ArrayAsDouble# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsDouble#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsStablePtr# #-}-writeWord8ArrayAsStablePtr# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s-writeWord8ArrayAsStablePtr# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsStablePtr#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsInt16# #-}-writeWord8ArrayAsInt16# :: MutableByteArray# s -> Int# -> Int16# -> State# s -> State# s-writeWord8ArrayAsInt16# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsInt16#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsInt32# #-}-writeWord8ArrayAsInt32# :: MutableByteArray# s -> Int# -> Int32# -> State# s -> State# s-writeWord8ArrayAsInt32# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsInt32#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsInt64# #-}-writeWord8ArrayAsInt64# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-writeWord8ArrayAsInt64# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsInt64#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsWord16# #-}-writeWord8ArrayAsWord16# :: MutableByteArray# s -> Int# -> Word16# -> State# s -> State# s-writeWord8ArrayAsWord16# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsWord16#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsWord32# #-}-writeWord8ArrayAsWord32# :: MutableByteArray# s -> Int# -> Word32# -> State# s -> State# s-writeWord8ArrayAsWord32# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsWord32#) a1 a2 a3 a4-{-# NOINLINE writeWord8ArrayAsWord64# #-}-writeWord8ArrayAsWord64# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s-writeWord8ArrayAsWord64# a1 a2 a3 a4 = (GHC.Prim.writeWord8ArrayAsWord64#) a1 a2 a3 a4-{-# NOINLINE compareByteArrays# #-}-compareByteArrays# :: ByteArray# -> Int# -> ByteArray# -> Int# -> Int# -> Int#-compareByteArrays# a1 a2 a3 a4 a5 = (GHC.Prim.compareByteArrays#) a1 a2 a3 a4 a5-{-# NOINLINE copyByteArray# #-}-copyByteArray# :: ByteArray# -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-copyByteArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copyByteArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE copyMutableByteArray# #-}-copyMutableByteArray# :: MutableByteArray# s -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-copyMutableByteArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copyMutableByteArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE copyByteArrayToAddr# #-}-copyByteArrayToAddr# :: ByteArray# -> Int# -> Addr# -> Int# -> State# s -> State# s-copyByteArrayToAddr# a1 a2 a3 a4 a5 = (GHC.Prim.copyByteArrayToAddr#) a1 a2 a3 a4 a5-{-# NOINLINE copyMutableByteArrayToAddr# #-}-copyMutableByteArrayToAddr# :: MutableByteArray# s -> Int# -> Addr# -> Int# -> State# s -> State# s-copyMutableByteArrayToAddr# a1 a2 a3 a4 a5 = (GHC.Prim.copyMutableByteArrayToAddr#) a1 a2 a3 a4 a5-{-# NOINLINE copyAddrToByteArray# #-}-copyAddrToByteArray# :: Addr# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-copyAddrToByteArray# a1 a2 a3 a4 a5 = (GHC.Prim.copyAddrToByteArray#) a1 a2 a3 a4 a5-{-# NOINLINE setByteArray# #-}-setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> State# s-setByteArray# a1 a2 a3 a4 a5 = (GHC.Prim.setByteArray#) a1 a2 a3 a4 a5-{-# NOINLINE atomicReadIntArray# #-}-atomicReadIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)-atomicReadIntArray# a1 a2 a3 = (GHC.Prim.atomicReadIntArray#) a1 a2 a3-{-# NOINLINE atomicWriteIntArray# #-}-atomicWriteIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s-atomicWriteIntArray# a1 a2 a3 a4 = (GHC.Prim.atomicWriteIntArray#) a1 a2 a3 a4-{-# NOINLINE casIntArray# #-}-casIntArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> (# State# s,Int# #)-casIntArray# a1 a2 a3 a4 a5 = (GHC.Prim.casIntArray#) a1 a2 a3 a4 a5-{-# NOINLINE fetchAddIntArray# #-}-fetchAddIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)-fetchAddIntArray# a1 a2 a3 a4 = (GHC.Prim.fetchAddIntArray#) a1 a2 a3 a4-{-# NOINLINE fetchSubIntArray# #-}-fetchSubIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)-fetchSubIntArray# a1 a2 a3 a4 = (GHC.Prim.fetchSubIntArray#) a1 a2 a3 a4-{-# NOINLINE fetchAndIntArray# #-}-fetchAndIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)-fetchAndIntArray# a1 a2 a3 a4 = (GHC.Prim.fetchAndIntArray#) a1 a2 a3 a4-{-# NOINLINE fetchNandIntArray# #-}-fetchNandIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)-fetchNandIntArray# a1 a2 a3 a4 = (GHC.Prim.fetchNandIntArray#) a1 a2 a3 a4-{-# NOINLINE fetchOrIntArray# #-}-fetchOrIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)-fetchOrIntArray# a1 a2 a3 a4 = (GHC.Prim.fetchOrIntArray#) a1 a2 a3 a4-{-# NOINLINE fetchXorIntArray# #-}-fetchXorIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)-fetchXorIntArray# a1 a2 a3 a4 = (GHC.Prim.fetchXorIntArray#) a1 a2 a3 a4-{-# NOINLINE newArrayArray# #-}-newArrayArray# :: Int# -> State# s -> (# State# s,MutableArrayArray# s #)-newArrayArray# a1 a2 = (GHC.Prim.newArrayArray#) a1 a2-{-# NOINLINE sameMutableArrayArray# #-}-sameMutableArrayArray# :: MutableArrayArray# s -> MutableArrayArray# s -> Int#-sameMutableArrayArray# a1 a2 = (GHC.Prim.sameMutableArrayArray#) a1 a2-{-# NOINLINE unsafeFreezeArrayArray# #-}-unsafeFreezeArrayArray# :: MutableArrayArray# s -> State# s -> (# State# s,ArrayArray# #)-unsafeFreezeArrayArray# a1 a2 = (GHC.Prim.unsafeFreezeArrayArray#) a1 a2-{-# NOINLINE sizeofArrayArray# #-}-sizeofArrayArray# :: ArrayArray# -> Int#-sizeofArrayArray# a1 = (GHC.Prim.sizeofArrayArray#) a1-{-# NOINLINE sizeofMutableArrayArray# #-}-sizeofMutableArrayArray# :: MutableArrayArray# s -> Int#-sizeofMutableArrayArray# a1 = (GHC.Prim.sizeofMutableArrayArray#) a1-{-# NOINLINE indexByteArrayArray# #-}-indexByteArrayArray# :: ArrayArray# -> Int# -> ByteArray#-indexByteArrayArray# a1 a2 = (GHC.Prim.indexByteArrayArray#) a1 a2-{-# NOINLINE indexArrayArrayArray# #-}-indexArrayArrayArray# :: ArrayArray# -> Int# -> ArrayArray#-indexArrayArrayArray# a1 a2 = (GHC.Prim.indexArrayArrayArray#) a1 a2-{-# NOINLINE readByteArrayArray# #-}-readByteArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,ByteArray# #)-readByteArrayArray# a1 a2 a3 = (GHC.Prim.readByteArrayArray#) a1 a2 a3-{-# NOINLINE readMutableByteArrayArray# #-}-readMutableByteArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,MutableByteArray# s #)-readMutableByteArrayArray# a1 a2 a3 = (GHC.Prim.readMutableByteArrayArray#) a1 a2 a3-{-# NOINLINE readArrayArrayArray# #-}-readArrayArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,ArrayArray# #)-readArrayArrayArray# a1 a2 a3 = (GHC.Prim.readArrayArrayArray#) a1 a2 a3-{-# NOINLINE readMutableArrayArrayArray# #-}-readMutableArrayArrayArray# :: MutableArrayArray# s -> Int# -> State# s -> (# State# s,MutableArrayArray# s #)-readMutableArrayArrayArray# a1 a2 a3 = (GHC.Prim.readMutableArrayArrayArray#) a1 a2 a3-{-# NOINLINE writeByteArrayArray# #-}-writeByteArrayArray# :: MutableArrayArray# s -> Int# -> ByteArray# -> State# s -> State# s-writeByteArrayArray# a1 a2 a3 a4 = (GHC.Prim.writeByteArrayArray#) a1 a2 a3 a4-{-# NOINLINE writeMutableByteArrayArray# #-}-writeMutableByteArrayArray# :: MutableArrayArray# s -> Int# -> MutableByteArray# s -> State# s -> State# s-writeMutableByteArrayArray# a1 a2 a3 a4 = (GHC.Prim.writeMutableByteArrayArray#) a1 a2 a3 a4-{-# NOINLINE writeArrayArrayArray# #-}-writeArrayArrayArray# :: MutableArrayArray# s -> Int# -> ArrayArray# -> State# s -> State# s-writeArrayArrayArray# a1 a2 a3 a4 = (GHC.Prim.writeArrayArrayArray#) a1 a2 a3 a4-{-# NOINLINE writeMutableArrayArrayArray# #-}-writeMutableArrayArrayArray# :: MutableArrayArray# s -> Int# -> MutableArrayArray# s -> State# s -> State# s-writeMutableArrayArrayArray# a1 a2 a3 a4 = (GHC.Prim.writeMutableArrayArrayArray#) a1 a2 a3 a4-{-# NOINLINE copyArrayArray# #-}-copyArrayArray# :: ArrayArray# -> Int# -> MutableArrayArray# s -> Int# -> Int# -> State# s -> State# s-copyArrayArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copyArrayArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE copyMutableArrayArray# #-}-copyMutableArrayArray# :: MutableArrayArray# s -> Int# -> MutableArrayArray# s -> Int# -> Int# -> State# s -> State# s-copyMutableArrayArray# a1 a2 a3 a4 a5 a6 = (GHC.Prim.copyMutableArrayArray#) a1 a2 a3 a4 a5 a6-{-# NOINLINE plusAddr# #-}-plusAddr# :: Addr# -> Int# -> Addr#-plusAddr# a1 a2 = (GHC.Prim.plusAddr#) a1 a2-{-# NOINLINE minusAddr# #-}-minusAddr# :: Addr# -> Addr# -> Int#-minusAddr# a1 a2 = (GHC.Prim.minusAddr#) a1 a2-{-# NOINLINE remAddr# #-}-remAddr# :: Addr# -> Int# -> Int#-remAddr# a1 a2 = (GHC.Prim.remAddr#) a1 a2-{-# NOINLINE addr2Int# #-}-addr2Int# :: Addr# -> Int#-addr2Int# a1 = (GHC.Prim.addr2Int#) a1-{-# NOINLINE int2Addr# #-}-int2Addr# :: Int# -> Addr#-int2Addr# a1 = (GHC.Prim.int2Addr#) a1-{-# NOINLINE gtAddr# #-}-gtAddr# :: Addr# -> Addr# -> Int#-gtAddr# a1 a2 = (GHC.Prim.gtAddr#) a1 a2-{-# NOINLINE geAddr# #-}-geAddr# :: Addr# -> Addr# -> Int#-geAddr# a1 a2 = (GHC.Prim.geAddr#) a1 a2-{-# NOINLINE eqAddr# #-}-eqAddr# :: Addr# -> Addr# -> Int#-eqAddr# a1 a2 = (GHC.Prim.eqAddr#) a1 a2-{-# NOINLINE neAddr# #-}-neAddr# :: Addr# -> Addr# -> Int#-neAddr# a1 a2 = (GHC.Prim.neAddr#) a1 a2-{-# NOINLINE ltAddr# #-}-ltAddr# :: Addr# -> Addr# -> Int#-ltAddr# a1 a2 = (GHC.Prim.ltAddr#) a1 a2-{-# NOINLINE leAddr# #-}-leAddr# :: Addr# -> Addr# -> Int#-leAddr# a1 a2 = (GHC.Prim.leAddr#) a1 a2-{-# NOINLINE indexCharOffAddr# #-}-indexCharOffAddr# :: Addr# -> Int# -> Char#-indexCharOffAddr# a1 a2 = (GHC.Prim.indexCharOffAddr#) a1 a2-{-# NOINLINE indexWideCharOffAddr# #-}-indexWideCharOffAddr# :: Addr# -> Int# -> Char#-indexWideCharOffAddr# a1 a2 = (GHC.Prim.indexWideCharOffAddr#) a1 a2-{-# NOINLINE indexIntOffAddr# #-}-indexIntOffAddr# :: Addr# -> Int# -> Int#-indexIntOffAddr# a1 a2 = (GHC.Prim.indexIntOffAddr#) a1 a2-{-# NOINLINE indexWordOffAddr# #-}-indexWordOffAddr# :: Addr# -> Int# -> Word#-indexWordOffAddr# a1 a2 = (GHC.Prim.indexWordOffAddr#) a1 a2-{-# NOINLINE indexAddrOffAddr# #-}-indexAddrOffAddr# :: Addr# -> Int# -> Addr#-indexAddrOffAddr# a1 a2 = (GHC.Prim.indexAddrOffAddr#) a1 a2-{-# NOINLINE indexFloatOffAddr# #-}-indexFloatOffAddr# :: Addr# -> Int# -> Float#-indexFloatOffAddr# a1 a2 = (GHC.Prim.indexFloatOffAddr#) a1 a2-{-# NOINLINE indexDoubleOffAddr# #-}-indexDoubleOffAddr# :: Addr# -> Int# -> Double#-indexDoubleOffAddr# a1 a2 = (GHC.Prim.indexDoubleOffAddr#) a1 a2-{-# NOINLINE indexStablePtrOffAddr# #-}-indexStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a-indexStablePtrOffAddr# a1 a2 = (GHC.Prim.indexStablePtrOffAddr#) a1 a2-{-# NOINLINE indexInt8OffAddr# #-}-indexInt8OffAddr# :: Addr# -> Int# -> Int8#-indexInt8OffAddr# a1 a2 = (GHC.Prim.indexInt8OffAddr#) a1 a2-{-# NOINLINE indexInt16OffAddr# #-}-indexInt16OffAddr# :: Addr# -> Int# -> Int16#-indexInt16OffAddr# a1 a2 = (GHC.Prim.indexInt16OffAddr#) a1 a2-{-# NOINLINE indexInt32OffAddr# #-}-indexInt32OffAddr# :: Addr# -> Int# -> Int32#-indexInt32OffAddr# a1 a2 = (GHC.Prim.indexInt32OffAddr#) a1 a2-{-# NOINLINE indexInt64OffAddr# #-}-indexInt64OffAddr# :: Addr# -> Int# -> Int#-indexInt64OffAddr# a1 a2 = (GHC.Prim.indexInt64OffAddr#) a1 a2-{-# NOINLINE indexWord8OffAddr# #-}-indexWord8OffAddr# :: Addr# -> Int# -> Word8#-indexWord8OffAddr# a1 a2 = (GHC.Prim.indexWord8OffAddr#) a1 a2-{-# NOINLINE indexWord16OffAddr# #-}-indexWord16OffAddr# :: Addr# -> Int# -> Word16#-indexWord16OffAddr# a1 a2 = (GHC.Prim.indexWord16OffAddr#) a1 a2-{-# NOINLINE indexWord32OffAddr# #-}-indexWord32OffAddr# :: Addr# -> Int# -> Word32#-indexWord32OffAddr# a1 a2 = (GHC.Prim.indexWord32OffAddr#) a1 a2-{-# NOINLINE indexWord64OffAddr# #-}-indexWord64OffAddr# :: Addr# -> Int# -> Word#-indexWord64OffAddr# a1 a2 = (GHC.Prim.indexWord64OffAddr#) a1 a2-{-# NOINLINE readCharOffAddr# #-}-readCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Char# #)-readCharOffAddr# a1 a2 a3 = (GHC.Prim.readCharOffAddr#) a1 a2 a3-{-# NOINLINE readWideCharOffAddr# #-}-readWideCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Char# #)-readWideCharOffAddr# a1 a2 a3 = (GHC.Prim.readWideCharOffAddr#) a1 a2 a3-{-# NOINLINE readIntOffAddr# #-}-readIntOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #)-readIntOffAddr# a1 a2 a3 = (GHC.Prim.readIntOffAddr#) a1 a2 a3-{-# NOINLINE readWordOffAddr# #-}-readWordOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #)-readWordOffAddr# a1 a2 a3 = (GHC.Prim.readWordOffAddr#) a1 a2 a3-{-# NOINLINE readAddrOffAddr# #-}-readAddrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Addr# #)-readAddrOffAddr# a1 a2 a3 = (GHC.Prim.readAddrOffAddr#) a1 a2 a3-{-# NOINLINE readFloatOffAddr# #-}-readFloatOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Float# #)-readFloatOffAddr# a1 a2 a3 = (GHC.Prim.readFloatOffAddr#) a1 a2 a3-{-# NOINLINE readDoubleOffAddr# #-}-readDoubleOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Double# #)-readDoubleOffAddr# a1 a2 a3 = (GHC.Prim.readDoubleOffAddr#) a1 a2 a3-{-# NOINLINE readStablePtrOffAddr# #-}-readStablePtrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,StablePtr# a #)-readStablePtrOffAddr# a1 a2 a3 = (GHC.Prim.readStablePtrOffAddr#) a1 a2 a3-{-# NOINLINE readInt8OffAddr# #-}-readInt8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int8# #)-readInt8OffAddr# a1 a2 a3 = (GHC.Prim.readInt8OffAddr#) a1 a2 a3-{-# NOINLINE readInt16OffAddr# #-}-readInt16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int16# #)-readInt16OffAddr# a1 a2 a3 = (GHC.Prim.readInt16OffAddr#) a1 a2 a3-{-# NOINLINE readInt32OffAddr# #-}-readInt32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int32# #)-readInt32OffAddr# a1 a2 a3 = (GHC.Prim.readInt32OffAddr#) a1 a2 a3-{-# NOINLINE readInt64OffAddr# #-}-readInt64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #)-readInt64OffAddr# a1 a2 a3 = (GHC.Prim.readInt64OffAddr#) a1 a2 a3-{-# NOINLINE readWord8OffAddr# #-}-readWord8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word8# #)-readWord8OffAddr# a1 a2 a3 = (GHC.Prim.readWord8OffAddr#) a1 a2 a3-{-# NOINLINE readWord16OffAddr# #-}-readWord16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word16# #)-readWord16OffAddr# a1 a2 a3 = (GHC.Prim.readWord16OffAddr#) a1 a2 a3-{-# NOINLINE readWord32OffAddr# #-}-readWord32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word32# #)-readWord32OffAddr# a1 a2 a3 = (GHC.Prim.readWord32OffAddr#) a1 a2 a3-{-# NOINLINE readWord64OffAddr# #-}-readWord64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #)-readWord64OffAddr# a1 a2 a3 = (GHC.Prim.readWord64OffAddr#) a1 a2 a3-{-# NOINLINE writeCharOffAddr# #-}-writeCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s-writeCharOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeCharOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeWideCharOffAddr# #-}-writeWideCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s-writeWideCharOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeWideCharOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeIntOffAddr# #-}-writeIntOffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s-writeIntOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeIntOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeWordOffAddr# #-}-writeWordOffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s-writeWordOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeWordOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeAddrOffAddr# #-}-writeAddrOffAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s-writeAddrOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeAddrOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeFloatOffAddr# #-}-writeFloatOffAddr# :: Addr# -> Int# -> Float# -> State# s -> State# s-writeFloatOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeFloatOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeDoubleOffAddr# #-}-writeDoubleOffAddr# :: Addr# -> Int# -> Double# -> State# s -> State# s-writeDoubleOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeDoubleOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeStablePtrOffAddr# #-}-writeStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a -> State# s -> State# s-writeStablePtrOffAddr# a1 a2 a3 a4 = (GHC.Prim.writeStablePtrOffAddr#) a1 a2 a3 a4-{-# NOINLINE writeInt8OffAddr# #-}-writeInt8OffAddr# :: Addr# -> Int# -> Int8# -> State# s -> State# s-writeInt8OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeInt8OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeInt16OffAddr# #-}-writeInt16OffAddr# :: Addr# -> Int# -> Int16# -> State# s -> State# s-writeInt16OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeInt16OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeInt32OffAddr# #-}-writeInt32OffAddr# :: Addr# -> Int# -> Int32# -> State# s -> State# s-writeInt32OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeInt32OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeInt64OffAddr# #-}-writeInt64OffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s-writeInt64OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeInt64OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeWord8OffAddr# #-}-writeWord8OffAddr# :: Addr# -> Int# -> Word8# -> State# s -> State# s-writeWord8OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeWord8OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeWord16OffAddr# #-}-writeWord16OffAddr# :: Addr# -> Int# -> Word16# -> State# s -> State# s-writeWord16OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeWord16OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeWord32OffAddr# #-}-writeWord32OffAddr# :: Addr# -> Int# -> Word32# -> State# s -> State# s-writeWord32OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeWord32OffAddr#) a1 a2 a3 a4-{-# NOINLINE writeWord64OffAddr# #-}-writeWord64OffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s-writeWord64OffAddr# a1 a2 a3 a4 = (GHC.Prim.writeWord64OffAddr#) a1 a2 a3 a4-{-# NOINLINE atomicExchangeAddrAddr# #-}-atomicExchangeAddrAddr# :: Addr# -> Addr# -> State# s -> (# State# s,Addr# #)-atomicExchangeAddrAddr# a1 a2 a3 = (GHC.Prim.atomicExchangeAddrAddr#) a1 a2 a3-{-# NOINLINE atomicExchangeWordAddr# #-}-atomicExchangeWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-atomicExchangeWordAddr# a1 a2 a3 = (GHC.Prim.atomicExchangeWordAddr#) a1 a2 a3-{-# NOINLINE atomicCasAddrAddr# #-}-atomicCasAddrAddr# :: Addr# -> Addr# -> Addr# -> State# s -> (# State# s,Addr# #)-atomicCasAddrAddr# a1 a2 a3 a4 = (GHC.Prim.atomicCasAddrAddr#) a1 a2 a3 a4-{-# NOINLINE atomicCasWordAddr# #-}-atomicCasWordAddr# :: Addr# -> Word# -> Word# -> State# s -> (# State# s,Word# #)-atomicCasWordAddr# a1 a2 a3 a4 = (GHC.Prim.atomicCasWordAddr#) a1 a2 a3 a4-{-# NOINLINE fetchAddWordAddr# #-}-fetchAddWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-fetchAddWordAddr# a1 a2 a3 = (GHC.Prim.fetchAddWordAddr#) a1 a2 a3-{-# NOINLINE fetchSubWordAddr# #-}-fetchSubWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-fetchSubWordAddr# a1 a2 a3 = (GHC.Prim.fetchSubWordAddr#) a1 a2 a3-{-# NOINLINE fetchAndWordAddr# #-}-fetchAndWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-fetchAndWordAddr# a1 a2 a3 = (GHC.Prim.fetchAndWordAddr#) a1 a2 a3-{-# NOINLINE fetchNandWordAddr# #-}-fetchNandWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-fetchNandWordAddr# a1 a2 a3 = (GHC.Prim.fetchNandWordAddr#) a1 a2 a3-{-# NOINLINE fetchOrWordAddr# #-}-fetchOrWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-fetchOrWordAddr# a1 a2 a3 = (GHC.Prim.fetchOrWordAddr#) a1 a2 a3-{-# NOINLINE fetchXorWordAddr# #-}-fetchXorWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)-fetchXorWordAddr# a1 a2 a3 = (GHC.Prim.fetchXorWordAddr#) a1 a2 a3-{-# NOINLINE atomicReadWordAddr# #-}-atomicReadWordAddr# :: Addr# -> State# s -> (# State# s,Word# #)-atomicReadWordAddr# a1 a2 = (GHC.Prim.atomicReadWordAddr#) a1 a2-{-# NOINLINE atomicWriteWordAddr# #-}-atomicWriteWordAddr# :: Addr# -> Word# -> State# s -> State# s-atomicWriteWordAddr# a1 a2 a3 = (GHC.Prim.atomicWriteWordAddr#) a1 a2 a3-{-# NOINLINE newMutVar# #-}-newMutVar# :: a -> State# s -> (# State# s,MutVar# s a #)-newMutVar# a1 a2 = (GHC.Prim.newMutVar#) a1 a2-{-# NOINLINE readMutVar# #-}-readMutVar# :: MutVar# s a -> State# s -> (# State# s,a #)-readMutVar# a1 a2 = (GHC.Prim.readMutVar#) a1 a2-{-# NOINLINE writeMutVar# #-}-writeMutVar# :: MutVar# s a -> a -> State# s -> State# s-writeMutVar# a1 a2 a3 = (GHC.Prim.writeMutVar#) a1 a2 a3-{-# NOINLINE sameMutVar# #-}-sameMutVar# :: MutVar# s a -> MutVar# s a -> Int#-sameMutVar# a1 a2 = (GHC.Prim.sameMutVar#) a1 a2-{-# NOINLINE atomicModifyMutVar2# #-}-atomicModifyMutVar2# :: MutVar# s a -> (a -> c) -> State# s -> (# State# s,a,c #)-atomicModifyMutVar2# a1 a2 a3 = (GHC.Prim.atomicModifyMutVar2#) a1 a2 a3-{-# NOINLINE atomicModifyMutVar_# #-}-atomicModifyMutVar_# :: MutVar# s a -> (a -> a) -> State# s -> (# State# s,a,a #)-atomicModifyMutVar_# a1 a2 a3 = (GHC.Prim.atomicModifyMutVar_#) a1 a2 a3-{-# NOINLINE casMutVar# #-}-casMutVar# :: MutVar# s a -> a -> a -> State# s -> (# State# s,Int#,a #)-casMutVar# a1 a2 a3 a4 = (GHC.Prim.casMutVar#) a1 a2 a3 a4-{-# NOINLINE catch# #-}-catch# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-catch# a1 a2 a3 = (GHC.Prim.catch#) a1 a2 a3-{-# NOINLINE raise# #-}-raise# :: b -> o-raise# a1 = (GHC.Prim.raise#) a1-{-# NOINLINE raiseIO# #-}-raiseIO# :: a -> State# (RealWorld) -> (# State# (RealWorld),b #)-raiseIO# a1 a2 = (GHC.Prim.raiseIO#) a1 a2-{-# NOINLINE maskAsyncExceptions# #-}-maskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-maskAsyncExceptions# a1 a2 = (GHC.Prim.maskAsyncExceptions#) a1 a2-{-# NOINLINE maskUninterruptible# #-}-maskUninterruptible# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-maskUninterruptible# a1 a2 = (GHC.Prim.maskUninterruptible#) a1 a2-{-# NOINLINE unmaskAsyncExceptions# #-}-unmaskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-unmaskAsyncExceptions# a1 a2 = (GHC.Prim.unmaskAsyncExceptions#) a1 a2-{-# NOINLINE getMaskingState# #-}-getMaskingState# :: State# (RealWorld) -> (# State# (RealWorld),Int# #)-getMaskingState# a1 = (GHC.Prim.getMaskingState#) a1-{-# NOINLINE atomically# #-}-atomically# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-atomically# a1 a2 = (GHC.Prim.atomically#) a1 a2-{-# NOINLINE retry# #-}-retry# :: State# (RealWorld) -> (# State# (RealWorld),a #)-retry# a1 = (GHC.Prim.retry#) a1-{-# NOINLINE catchRetry# #-}-catchRetry# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-catchRetry# a1 a2 a3 = (GHC.Prim.catchRetry#) a1 a2 a3-{-# NOINLINE catchSTM# #-}-catchSTM# :: (State# (RealWorld) -> (# State# (RealWorld),a #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)-catchSTM# a1 a2 a3 = (GHC.Prim.catchSTM#) a1 a2 a3-{-# NOINLINE newTVar# #-}-newTVar# :: a -> State# s -> (# State# s,TVar# s a #)-newTVar# a1 a2 = (GHC.Prim.newTVar#) a1 a2-{-# NOINLINE readTVar# #-}-readTVar# :: TVar# s a -> State# s -> (# State# s,a #)-readTVar# a1 a2 = (GHC.Prim.readTVar#) a1 a2-{-# NOINLINE readTVarIO# #-}-readTVarIO# :: TVar# s a -> State# s -> (# State# s,a #)-readTVarIO# a1 a2 = (GHC.Prim.readTVarIO#) a1 a2-{-# NOINLINE writeTVar# #-}-writeTVar# :: TVar# s a -> a -> State# s -> State# s-writeTVar# a1 a2 a3 = (GHC.Prim.writeTVar#) a1 a2 a3-{-# NOINLINE sameTVar# #-}-sameTVar# :: TVar# s a -> TVar# s a -> Int#-sameTVar# a1 a2 = (GHC.Prim.sameTVar#) a1 a2-{-# NOINLINE newMVar# #-}-newMVar# :: State# s -> (# State# s,MVar# s a #)-newMVar# a1 = (GHC.Prim.newMVar#) a1-{-# NOINLINE takeMVar# #-}-takeMVar# :: MVar# s a -> State# s -> (# State# s,a #)-takeMVar# a1 a2 = (GHC.Prim.takeMVar#) a1 a2-{-# NOINLINE tryTakeMVar# #-}-tryTakeMVar# :: MVar# s a -> State# s -> (# State# s,Int#,a #)-tryTakeMVar# a1 a2 = (GHC.Prim.tryTakeMVar#) a1 a2-{-# NOINLINE putMVar# #-}-putMVar# :: MVar# s a -> a -> State# s -> State# s-putMVar# a1 a2 a3 = (GHC.Prim.putMVar#) a1 a2 a3-{-# NOINLINE tryPutMVar# #-}-tryPutMVar# :: MVar# s a -> a -> State# s -> (# State# s,Int# #)-tryPutMVar# a1 a2 a3 = (GHC.Prim.tryPutMVar#) a1 a2 a3-{-# NOINLINE readMVar# #-}-readMVar# :: MVar# s a -> State# s -> (# State# s,a #)-readMVar# a1 a2 = (GHC.Prim.readMVar#) a1 a2-{-# NOINLINE tryReadMVar# #-}-tryReadMVar# :: MVar# s a -> State# s -> (# State# s,Int#,a #)-tryReadMVar# a1 a2 = (GHC.Prim.tryReadMVar#) a1 a2-{-# NOINLINE sameMVar# #-}-sameMVar# :: MVar# s a -> MVar# s a -> Int#-sameMVar# a1 a2 = (GHC.Prim.sameMVar#) a1 a2-{-# NOINLINE isEmptyMVar# #-}-isEmptyMVar# :: MVar# s a -> State# s -> (# State# s,Int# #)-isEmptyMVar# a1 a2 = (GHC.Prim.isEmptyMVar#) a1 a2-{-# NOINLINE newIOPort# #-}-newIOPort# :: State# s -> (# State# s,IOPort# s a #)-newIOPort# a1 = (GHC.Prim.newIOPort#) a1-{-# NOINLINE readIOPort# #-}-readIOPort# :: IOPort# s a -> State# s -> (# State# s,a #)-readIOPort# a1 a2 = (GHC.Prim.readIOPort#) a1 a2-{-# NOINLINE writeIOPort# #-}-writeIOPort# :: IOPort# s a -> a -> State# s -> (# State# s,Int# #)-writeIOPort# a1 a2 a3 = (GHC.Prim.writeIOPort#) a1 a2 a3-{-# NOINLINE sameIOPort# #-}-sameIOPort# :: IOPort# s a -> IOPort# s a -> Int#-sameIOPort# a1 a2 = (GHC.Prim.sameIOPort#) a1 a2-{-# NOINLINE delay# #-}-delay# :: Int# -> State# s -> State# s-delay# a1 a2 = (GHC.Prim.delay#) a1 a2-{-# NOINLINE waitRead# #-}-waitRead# :: Int# -> State# s -> State# s-waitRead# a1 a2 = (GHC.Prim.waitRead#) a1 a2-{-# NOINLINE waitWrite# #-}-waitWrite# :: Int# -> State# s -> State# s-waitWrite# a1 a2 = (GHC.Prim.waitWrite#) a1 a2-{-# NOINLINE fork# #-}-fork# :: a -> State# (RealWorld) -> (# State# (RealWorld),ThreadId# #)-fork# a1 a2 = (GHC.Prim.fork#) a1 a2-{-# NOINLINE forkOn# #-}-forkOn# :: Int# -> a -> State# (RealWorld) -> (# State# (RealWorld),ThreadId# #)-forkOn# a1 a2 a3 = (GHC.Prim.forkOn#) a1 a2 a3-{-# NOINLINE killThread# #-}-killThread# :: ThreadId# -> a -> State# (RealWorld) -> State# (RealWorld)-killThread# a1 a2 a3 = (GHC.Prim.killThread#) a1 a2 a3-{-# NOINLINE yield# #-}-yield# :: State# (RealWorld) -> State# (RealWorld)-yield# a1 = (GHC.Prim.yield#) a1-{-# NOINLINE myThreadId# #-}-myThreadId# :: State# (RealWorld) -> (# State# (RealWorld),ThreadId# #)-myThreadId# a1 = (GHC.Prim.myThreadId#) a1-{-# NOINLINE labelThread# #-}-labelThread# :: ThreadId# -> Addr# -> State# (RealWorld) -> State# (RealWorld)-labelThread# a1 a2 a3 = (GHC.Prim.labelThread#) a1 a2 a3-{-# NOINLINE isCurrentThreadBound# #-}-isCurrentThreadBound# :: State# (RealWorld) -> (# State# (RealWorld),Int# #)-isCurrentThreadBound# a1 = (GHC.Prim.isCurrentThreadBound#) a1-{-# NOINLINE noDuplicate# #-}-noDuplicate# :: State# s -> State# s-noDuplicate# a1 = (GHC.Prim.noDuplicate#) a1-{-# NOINLINE threadStatus# #-}-threadStatus# :: ThreadId# -> State# (RealWorld) -> (# State# (RealWorld),Int#,Int#,Int# #)-threadStatus# a1 a2 = (GHC.Prim.threadStatus#) a1 a2-{-# NOINLINE mkWeak# #-}-mkWeak# :: o -> b -> (State# (RealWorld) -> (# State# (RealWorld),c #)) -> State# (RealWorld) -> (# State# (RealWorld),Weak# b #)-mkWeak# a1 a2 a3 a4 = (GHC.Prim.mkWeak#) a1 a2 a3 a4-{-# NOINLINE mkWeakNoFinalizer# #-}-mkWeakNoFinalizer# :: o -> b -> State# (RealWorld) -> (# State# (RealWorld),Weak# b #)-mkWeakNoFinalizer# a1 a2 a3 = (GHC.Prim.mkWeakNoFinalizer#) a1 a2 a3-{-# NOINLINE addCFinalizerToWeak# #-}-addCFinalizerToWeak# :: Addr# -> Addr# -> Int# -> Addr# -> Weak# b -> State# (RealWorld) -> (# State# (RealWorld),Int# #)-addCFinalizerToWeak# a1 a2 a3 a4 a5 a6 = (GHC.Prim.addCFinalizerToWeak#) a1 a2 a3 a4 a5 a6-{-# NOINLINE deRefWeak# #-}-deRefWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld),Int#,a #)-deRefWeak# a1 a2 = (GHC.Prim.deRefWeak#) a1 a2-{-# NOINLINE finalizeWeak# #-}-finalizeWeak# :: Weak# a -> State# (RealWorld) -> (# State# (RealWorld),Int#,State# (RealWorld) -> (# State# (RealWorld),b #) #)-finalizeWeak# a1 a2 = (GHC.Prim.finalizeWeak#) a1 a2-{-# NOINLINE touch# #-}-touch# :: o -> State# (RealWorld) -> State# (RealWorld)-touch# a1 a2 = (GHC.Prim.touch#) a1 a2-{-# NOINLINE makeStablePtr# #-}-makeStablePtr# :: a -> State# (RealWorld) -> (# State# (RealWorld),StablePtr# a #)-makeStablePtr# a1 a2 = (GHC.Prim.makeStablePtr#) a1 a2-{-# NOINLINE deRefStablePtr# #-}-deRefStablePtr# :: StablePtr# a -> State# (RealWorld) -> (# State# (RealWorld),a #)-deRefStablePtr# a1 a2 = (GHC.Prim.deRefStablePtr#) a1 a2-{-# NOINLINE eqStablePtr# #-}-eqStablePtr# :: StablePtr# a -> StablePtr# a -> Int#-eqStablePtr# a1 a2 = (GHC.Prim.eqStablePtr#) a1 a2-{-# NOINLINE makeStableName# #-}-makeStableName# :: a -> State# (RealWorld) -> (# State# (RealWorld),StableName# a #)-makeStableName# a1 a2 = (GHC.Prim.makeStableName#) a1 a2-{-# NOINLINE eqStableName# #-}-eqStableName# :: StableName# a -> StableName# b -> Int#-eqStableName# a1 a2 = (GHC.Prim.eqStableName#) a1 a2-{-# NOINLINE stableNameToInt# #-}-stableNameToInt# :: StableName# a -> Int#-stableNameToInt# a1 = (GHC.Prim.stableNameToInt#) a1-{-# NOINLINE compactNew# #-}-compactNew# :: Word# -> State# (RealWorld) -> (# State# (RealWorld),Compact# #)-compactNew# a1 a2 = (GHC.Prim.compactNew#) a1 a2-{-# NOINLINE compactResize# #-}-compactResize# :: Compact# -> Word# -> State# (RealWorld) -> State# (RealWorld)-compactResize# a1 a2 a3 = (GHC.Prim.compactResize#) a1 a2 a3-{-# NOINLINE compactContains# #-}-compactContains# :: Compact# -> a -> State# (RealWorld) -> (# State# (RealWorld),Int# #)-compactContains# a1 a2 a3 = (GHC.Prim.compactContains#) a1 a2 a3-{-# NOINLINE compactContainsAny# #-}-compactContainsAny# :: a -> State# (RealWorld) -> (# State# (RealWorld),Int# #)-compactContainsAny# a1 a2 = (GHC.Prim.compactContainsAny#) a1 a2-{-# NOINLINE compactGetFirstBlock# #-}-compactGetFirstBlock# :: Compact# -> State# (RealWorld) -> (# State# (RealWorld),Addr#,Word# #)-compactGetFirstBlock# a1 a2 = (GHC.Prim.compactGetFirstBlock#) a1 a2-{-# NOINLINE compactGetNextBlock# #-}-compactGetNextBlock# :: Compact# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld),Addr#,Word# #)-compactGetNextBlock# a1 a2 a3 = (GHC.Prim.compactGetNextBlock#) a1 a2 a3-{-# NOINLINE compactAllocateBlock# #-}-compactAllocateBlock# :: Word# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld),Addr# #)-compactAllocateBlock# a1 a2 a3 = (GHC.Prim.compactAllocateBlock#) a1 a2 a3-{-# NOINLINE compactFixupPointers# #-}-compactFixupPointers# :: Addr# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld),Compact#,Addr# #)-compactFixupPointers# a1 a2 a3 = (GHC.Prim.compactFixupPointers#) a1 a2 a3-{-# NOINLINE compactAdd# #-}-compactAdd# :: Compact# -> a -> State# (RealWorld) -> (# State# (RealWorld),a #)-compactAdd# a1 a2 a3 = (GHC.Prim.compactAdd#) a1 a2 a3-{-# NOINLINE compactAddWithSharing# #-}-compactAddWithSharing# :: Compact# -> a -> State# (RealWorld) -> (# State# (RealWorld),a #)-compactAddWithSharing# a1 a2 a3 = (GHC.Prim.compactAddWithSharing#) a1 a2 a3-{-# NOINLINE compactSize# #-}-compactSize# :: Compact# -> State# (RealWorld) -> (# State# (RealWorld),Word# #)-compactSize# a1 a2 = (GHC.Prim.compactSize#) a1 a2-{-# NOINLINE reallyUnsafePtrEquality# #-}-reallyUnsafePtrEquality# :: a -> a -> Int#-reallyUnsafePtrEquality# a1 a2 = (GHC.Prim.reallyUnsafePtrEquality#) a1 a2-{-# NOINLINE par# #-}-par# :: a -> Int#-par# a1 = (GHC.Prim.par#) a1-{-# NOINLINE spark# #-}-spark# :: a -> State# s -> (# State# s,a #)-spark# a1 a2 = (GHC.Prim.spark#) a1 a2-{-# NOINLINE seq# #-}-seq# :: a -> State# s -> (# State# s,a #)-seq# a1 a2 = (GHC.Prim.seq#) a1 a2-{-# NOINLINE getSpark# #-}-getSpark# :: State# s -> (# State# s,Int#,a #)-getSpark# a1 = (GHC.Prim.getSpark#) a1-{-# NOINLINE numSparks# #-}-numSparks# :: State# s -> (# State# s,Int# #)-numSparks# a1 = (GHC.Prim.numSparks#) a1-{-# NOINLINE keepAlive# #-}-keepAlive# :: o -> State# (RealWorld) -> (State# (RealWorld) -> p) -> p-keepAlive# a1 a2 a3 = (GHC.Prim.keepAlive#) a1 a2 a3-{-# NOINLINE dataToTag# #-}-dataToTag# :: a -> Int#-dataToTag# a1 = (GHC.Prim.dataToTag#) a1-{-# NOINLINE addrToAny# #-}-addrToAny# :: Addr# -> (# a #)-addrToAny# a1 = (GHC.Prim.addrToAny#) a1-{-# NOINLINE anyToAddr# #-}-anyToAddr# :: a -> State# (RealWorld) -> (# State# (RealWorld),Addr# #)-anyToAddr# a1 a2 = (GHC.Prim.anyToAddr#) a1 a2-{-# NOINLINE mkApUpd0# #-}-mkApUpd0# :: BCO -> (# a #)-mkApUpd0# a1 = (GHC.Prim.mkApUpd0#) a1-{-# NOINLINE newBCO# #-}-newBCO# :: ByteArray# -> ByteArray# -> Array# a -> Int# -> ByteArray# -> State# s -> (# State# s,BCO #)-newBCO# a1 a2 a3 a4 a5 a6 = (GHC.Prim.newBCO#) a1 a2 a3 a4 a5 a6-{-# NOINLINE unpackClosure# #-}-unpackClosure# :: a -> (# Addr#,ByteArray#,Array# b #)-unpackClosure# a1 = (GHC.Prim.unpackClosure#) a1-{-# NOINLINE closureSize# #-}-closureSize# :: a -> Int#-closureSize# a1 = (GHC.Prim.closureSize#) a1-{-# NOINLINE getApStackVal# #-}-getApStackVal# :: a -> Int# -> (# Int#,b #)-getApStackVal# a1 a2 = (GHC.Prim.getApStackVal#) a1 a2-{-# NOINLINE getCCSOf# #-}-getCCSOf# :: a -> State# s -> (# State# s,Addr# #)-getCCSOf# a1 a2 = (GHC.Prim.getCCSOf#) a1 a2-{-# NOINLINE getCurrentCCS# #-}-getCurrentCCS# :: a -> State# s -> (# State# s,Addr# #)-getCurrentCCS# a1 a2 = (GHC.Prim.getCurrentCCS#) a1 a2-{-# NOINLINE clearCCS# #-}-clearCCS# :: (State# s -> (# State# s,a #)) -> State# s -> (# State# s,a #)-clearCCS# a1 a2 = (GHC.Prim.clearCCS#) a1 a2-{-# NOINLINE whereFrom# #-}-whereFrom# :: a -> State# s -> (# State# s,Addr# #)-whereFrom# a1 a2 = (GHC.Prim.whereFrom#) a1 a2-{-# NOINLINE traceEvent# #-}-traceEvent# :: Addr# -> State# s -> State# s-traceEvent# a1 a2 = (GHC.Prim.traceEvent#) a1 a2-{-# NOINLINE traceBinaryEvent# #-}-traceBinaryEvent# :: Addr# -> Int# -> State# s -> State# s-traceBinaryEvent# a1 a2 a3 = (GHC.Prim.traceBinaryEvent#) a1 a2 a3-{-# NOINLINE traceMarker# #-}-traceMarker# :: Addr# -> State# s -> State# s-traceMarker# a1 a2 = (GHC.Prim.traceMarker#) a1 a2-{-# NOINLINE setThreadAllocationCounter# #-}-setThreadAllocationCounter# :: Int# -> State# (RealWorld) -> State# (RealWorld)-setThreadAllocationCounter# a1 a2 = (GHC.Prim.setThreadAllocationCounter#) a1 a2-{-# NOINLINE prefetchByteArray3# #-}-prefetchByteArray3# :: ByteArray# -> Int# -> State# s -> State# s-prefetchByteArray3# a1 a2 a3 = (GHC.Prim.prefetchByteArray3#) a1 a2 a3-{-# NOINLINE prefetchMutableByteArray3# #-}-prefetchMutableByteArray3# :: MutableByteArray# s -> Int# -> State# s -> State# s-prefetchMutableByteArray3# a1 a2 a3 = (GHC.Prim.prefetchMutableByteArray3#) a1 a2 a3-{-# NOINLINE prefetchAddr3# #-}-prefetchAddr3# :: Addr# -> Int# -> State# s -> State# s-prefetchAddr3# a1 a2 a3 = (GHC.Prim.prefetchAddr3#) a1 a2 a3-{-# NOINLINE prefetchValue3# #-}-prefetchValue3# :: a -> State# s -> State# s-prefetchValue3# a1 a2 = (GHC.Prim.prefetchValue3#) a1 a2-{-# NOINLINE prefetchByteArray2# #-}-prefetchByteArray2# :: ByteArray# -> Int# -> State# s -> State# s-prefetchByteArray2# a1 a2 a3 = (GHC.Prim.prefetchByteArray2#) a1 a2 a3-{-# NOINLINE prefetchMutableByteArray2# #-}-prefetchMutableByteArray2# :: MutableByteArray# s -> Int# -> State# s -> State# s-prefetchMutableByteArray2# a1 a2 a3 = (GHC.Prim.prefetchMutableByteArray2#) a1 a2 a3-{-# NOINLINE prefetchAddr2# #-}-prefetchAddr2# :: Addr# -> Int# -> State# s -> State# s-prefetchAddr2# a1 a2 a3 = (GHC.Prim.prefetchAddr2#) a1 a2 a3-{-# NOINLINE prefetchValue2# #-}-prefetchValue2# :: a -> State# s -> State# s-prefetchValue2# a1 a2 = (GHC.Prim.prefetchValue2#) a1 a2-{-# NOINLINE prefetchByteArray1# #-}-prefetchByteArray1# :: ByteArray# -> Int# -> State# s -> State# s-prefetchByteArray1# a1 a2 a3 = (GHC.Prim.prefetchByteArray1#) a1 a2 a3-{-# NOINLINE prefetchMutableByteArray1# #-}-prefetchMutableByteArray1# :: MutableByteArray# s -> Int# -> State# s -> State# s-prefetchMutableByteArray1# a1 a2 a3 = (GHC.Prim.prefetchMutableByteArray1#) a1 a2 a3-{-# NOINLINE prefetchAddr1# #-}-prefetchAddr1# :: Addr# -> Int# -> State# s -> State# s-prefetchAddr1# a1 a2 a3 = (GHC.Prim.prefetchAddr1#) a1 a2 a3-{-# NOINLINE prefetchValue1# #-}-prefetchValue1# :: a -> State# s -> State# s-prefetchValue1# a1 a2 = (GHC.Prim.prefetchValue1#) a1 a2-{-# NOINLINE prefetchByteArray0# #-}-prefetchByteArray0# :: ByteArray# -> Int# -> State# s -> State# s-prefetchByteArray0# a1 a2 a3 = (GHC.Prim.prefetchByteArray0#) a1 a2 a3-{-# NOINLINE prefetchMutableByteArray0# #-}-prefetchMutableByteArray0# :: MutableByteArray# s -> Int# -> State# s -> State# s-prefetchMutableByteArray0# a1 a2 a3 = (GHC.Prim.prefetchMutableByteArray0#) a1 a2 a3-{-# NOINLINE prefetchAddr0# #-}-prefetchAddr0# :: Addr# -> Int# -> State# s -> State# s-prefetchAddr0# a1 a2 a3 = (GHC.Prim.prefetchAddr0#) a1 a2 a3-{-# NOINLINE prefetchValue0# #-}-prefetchValue0# :: a -> State# s -> State# s-prefetchValue0# a1 a2 = (GHC.Prim.prefetchValue0#) a1 a2+-- | Users should not import this module. It is GHC internal only.+-- Use "GHC.Exts" instead.+{-# LANGUAGE MagicHash, NoImplicitPrelude, UnboxedTuples #-}+{-# OPTIONS_GHC -Wno-deprecations -O0 -fno-do-eta-reduction #-}+module GHC.PrimopWrappers where+import qualified GHC.Prim+import GHC.Tuple ()+import GHC.Prim (Char#, Int#, Int8#, Word8#, Word#, Int16#, Word16#, Int32#, Word32#, Int64#, Word64#, Float#, Double#, State#, MutableArray#, Array#, SmallMutableArray#, SmallArray#, MutableByteArray#, ByteArray#, Addr#, StablePtr#, RealWorld, MutVar#, PromptTag#, TVar#, MVar#, IOPort#, ThreadId#, Weak#, StableName#, Compact#, BCO)+{-# NOINLINE gtChar# #-}+gtChar# :: Char# -> Char# -> Int#+gtChar# a1 a2 = GHC.Prim.gtChar# a1 a2+{-# NOINLINE geChar# #-}+geChar# :: Char# -> Char# -> Int#+geChar# a1 a2 = GHC.Prim.geChar# a1 a2+{-# NOINLINE eqChar# #-}+eqChar# :: Char# -> Char# -> Int#+eqChar# a1 a2 = GHC.Prim.eqChar# a1 a2+{-# NOINLINE neChar# #-}+neChar# :: Char# -> Char# -> Int#+neChar# a1 a2 = GHC.Prim.neChar# a1 a2+{-# NOINLINE ltChar# #-}+ltChar# :: Char# -> Char# -> Int#+ltChar# a1 a2 = GHC.Prim.ltChar# a1 a2+{-# NOINLINE leChar# #-}+leChar# :: Char# -> Char# -> Int#+leChar# a1 a2 = GHC.Prim.leChar# a1 a2+{-# NOINLINE ord# #-}+ord# :: Char# -> Int#+ord# a1 = GHC.Prim.ord# a1+{-# NOINLINE int8ToInt# #-}+int8ToInt# :: Int8# -> Int#+int8ToInt# a1 = GHC.Prim.int8ToInt# a1+{-# NOINLINE intToInt8# #-}+intToInt8# :: Int# -> Int8#+intToInt8# a1 = GHC.Prim.intToInt8# a1+{-# NOINLINE negateInt8# #-}+negateInt8# :: Int8# -> Int8#+negateInt8# a1 = GHC.Prim.negateInt8# a1+{-# NOINLINE plusInt8# #-}+plusInt8# :: Int8# -> Int8# -> Int8#+plusInt8# a1 a2 = GHC.Prim.plusInt8# a1 a2+{-# NOINLINE subInt8# #-}+subInt8# :: Int8# -> Int8# -> Int8#+subInt8# a1 a2 = GHC.Prim.subInt8# a1 a2+{-# NOINLINE timesInt8# #-}+timesInt8# :: Int8# -> Int8# -> Int8#+timesInt8# a1 a2 = GHC.Prim.timesInt8# a1 a2+{-# NOINLINE quotInt8# #-}+quotInt8# :: Int8# -> Int8# -> Int8#+quotInt8# a1 a2 = GHC.Prim.quotInt8# a1 a2+{-# NOINLINE remInt8# #-}+remInt8# :: Int8# -> Int8# -> Int8#+remInt8# a1 a2 = GHC.Prim.remInt8# a1 a2+{-# NOINLINE quotRemInt8# #-}+quotRemInt8# :: Int8# -> Int8# -> (# Int8#,Int8# #)+quotRemInt8# a1 a2 = GHC.Prim.quotRemInt8# a1 a2+{-# NOINLINE uncheckedShiftLInt8# #-}+uncheckedShiftLInt8# :: Int8# -> Int# -> Int8#+uncheckedShiftLInt8# a1 a2 = GHC.Prim.uncheckedShiftLInt8# a1 a2+{-# NOINLINE uncheckedShiftRAInt8# #-}+uncheckedShiftRAInt8# :: Int8# -> Int# -> Int8#+uncheckedShiftRAInt8# a1 a2 = GHC.Prim.uncheckedShiftRAInt8# a1 a2+{-# NOINLINE uncheckedShiftRLInt8# #-}+uncheckedShiftRLInt8# :: Int8# -> Int# -> Int8#+uncheckedShiftRLInt8# a1 a2 = GHC.Prim.uncheckedShiftRLInt8# a1 a2+{-# NOINLINE int8ToWord8# #-}+int8ToWord8# :: Int8# -> Word8#+int8ToWord8# a1 = GHC.Prim.int8ToWord8# a1+{-# NOINLINE eqInt8# #-}+eqInt8# :: Int8# -> Int8# -> Int#+eqInt8# a1 a2 = GHC.Prim.eqInt8# a1 a2+{-# NOINLINE geInt8# #-}+geInt8# :: Int8# -> Int8# -> Int#+geInt8# a1 a2 = GHC.Prim.geInt8# a1 a2+{-# NOINLINE gtInt8# #-}+gtInt8# :: Int8# -> Int8# -> Int#+gtInt8# a1 a2 = GHC.Prim.gtInt8# a1 a2+{-# NOINLINE leInt8# #-}+leInt8# :: Int8# -> Int8# -> Int#+leInt8# a1 a2 = GHC.Prim.leInt8# a1 a2+{-# NOINLINE ltInt8# #-}+ltInt8# :: Int8# -> Int8# -> Int#+ltInt8# a1 a2 = GHC.Prim.ltInt8# a1 a2+{-# NOINLINE neInt8# #-}+neInt8# :: Int8# -> Int8# -> Int#+neInt8# a1 a2 = GHC.Prim.neInt8# a1 a2+{-# NOINLINE word8ToWord# #-}+word8ToWord# :: Word8# -> Word#+word8ToWord# a1 = GHC.Prim.word8ToWord# a1+{-# NOINLINE wordToWord8# #-}+wordToWord8# :: Word# -> Word8#+wordToWord8# a1 = GHC.Prim.wordToWord8# a1+{-# NOINLINE plusWord8# #-}+plusWord8# :: Word8# -> Word8# -> Word8#+plusWord8# a1 a2 = GHC.Prim.plusWord8# a1 a2+{-# NOINLINE subWord8# #-}+subWord8# :: Word8# -> Word8# -> Word8#+subWord8# a1 a2 = GHC.Prim.subWord8# a1 a2+{-# NOINLINE timesWord8# #-}+timesWord8# :: Word8# -> Word8# -> Word8#+timesWord8# a1 a2 = GHC.Prim.timesWord8# a1 a2+{-# NOINLINE quotWord8# #-}+quotWord8# :: Word8# -> Word8# -> Word8#+quotWord8# a1 a2 = GHC.Prim.quotWord8# a1 a2+{-# NOINLINE remWord8# #-}+remWord8# :: Word8# -> Word8# -> Word8#+remWord8# a1 a2 = GHC.Prim.remWord8# a1 a2+{-# NOINLINE quotRemWord8# #-}+quotRemWord8# :: Word8# -> Word8# -> (# Word8#,Word8# #)+quotRemWord8# a1 a2 = GHC.Prim.quotRemWord8# a1 a2+{-# NOINLINE andWord8# #-}+andWord8# :: Word8# -> Word8# -> Word8#+andWord8# a1 a2 = GHC.Prim.andWord8# a1 a2+{-# NOINLINE orWord8# #-}+orWord8# :: Word8# -> Word8# -> Word8#+orWord8# a1 a2 = GHC.Prim.orWord8# a1 a2+{-# NOINLINE xorWord8# #-}+xorWord8# :: Word8# -> Word8# -> Word8#+xorWord8# a1 a2 = GHC.Prim.xorWord8# a1 a2+{-# NOINLINE notWord8# #-}+notWord8# :: Word8# -> Word8#+notWord8# a1 = GHC.Prim.notWord8# a1+{-# NOINLINE uncheckedShiftLWord8# #-}+uncheckedShiftLWord8# :: Word8# -> Int# -> Word8#+uncheckedShiftLWord8# a1 a2 = GHC.Prim.uncheckedShiftLWord8# a1 a2+{-# NOINLINE uncheckedShiftRLWord8# #-}+uncheckedShiftRLWord8# :: Word8# -> Int# -> Word8#+uncheckedShiftRLWord8# a1 a2 = GHC.Prim.uncheckedShiftRLWord8# a1 a2+{-# NOINLINE word8ToInt8# #-}+word8ToInt8# :: Word8# -> Int8#+word8ToInt8# a1 = GHC.Prim.word8ToInt8# a1+{-# NOINLINE eqWord8# #-}+eqWord8# :: Word8# -> Word8# -> Int#+eqWord8# a1 a2 = GHC.Prim.eqWord8# a1 a2+{-# NOINLINE geWord8# #-}+geWord8# :: Word8# -> Word8# -> Int#+geWord8# a1 a2 = GHC.Prim.geWord8# a1 a2+{-# NOINLINE gtWord8# #-}+gtWord8# :: Word8# -> Word8# -> Int#+gtWord8# a1 a2 = GHC.Prim.gtWord8# a1 a2+{-# NOINLINE leWord8# #-}+leWord8# :: Word8# -> Word8# -> Int#+leWord8# a1 a2 = GHC.Prim.leWord8# a1 a2+{-# NOINLINE ltWord8# #-}+ltWord8# :: Word8# -> Word8# -> Int#+ltWord8# a1 a2 = GHC.Prim.ltWord8# a1 a2+{-# NOINLINE neWord8# #-}+neWord8# :: Word8# -> Word8# -> Int#+neWord8# a1 a2 = GHC.Prim.neWord8# a1 a2+{-# NOINLINE int16ToInt# #-}+int16ToInt# :: Int16# -> Int#+int16ToInt# a1 = GHC.Prim.int16ToInt# a1+{-# NOINLINE intToInt16# #-}+intToInt16# :: Int# -> Int16#+intToInt16# a1 = GHC.Prim.intToInt16# a1+{-# NOINLINE negateInt16# #-}+negateInt16# :: Int16# -> Int16#+negateInt16# a1 = GHC.Prim.negateInt16# a1+{-# NOINLINE plusInt16# #-}+plusInt16# :: Int16# -> Int16# -> Int16#+plusInt16# a1 a2 = GHC.Prim.plusInt16# a1 a2+{-# NOINLINE subInt16# #-}+subInt16# :: Int16# -> Int16# -> Int16#+subInt16# a1 a2 = GHC.Prim.subInt16# a1 a2+{-# NOINLINE timesInt16# #-}+timesInt16# :: Int16# -> Int16# -> Int16#+timesInt16# a1 a2 = GHC.Prim.timesInt16# a1 a2+{-# NOINLINE quotInt16# #-}+quotInt16# :: Int16# -> Int16# -> Int16#+quotInt16# a1 a2 = GHC.Prim.quotInt16# a1 a2+{-# NOINLINE remInt16# #-}+remInt16# :: Int16# -> Int16# -> Int16#+remInt16# a1 a2 = GHC.Prim.remInt16# a1 a2+{-# NOINLINE quotRemInt16# #-}+quotRemInt16# :: Int16# -> Int16# -> (# Int16#,Int16# #)+quotRemInt16# a1 a2 = GHC.Prim.quotRemInt16# a1 a2+{-# NOINLINE uncheckedShiftLInt16# #-}+uncheckedShiftLInt16# :: Int16# -> Int# -> Int16#+uncheckedShiftLInt16# a1 a2 = GHC.Prim.uncheckedShiftLInt16# a1 a2+{-# NOINLINE uncheckedShiftRAInt16# #-}+uncheckedShiftRAInt16# :: Int16# -> Int# -> Int16#+uncheckedShiftRAInt16# a1 a2 = GHC.Prim.uncheckedShiftRAInt16# a1 a2+{-# NOINLINE uncheckedShiftRLInt16# #-}+uncheckedShiftRLInt16# :: Int16# -> Int# -> Int16#+uncheckedShiftRLInt16# a1 a2 = GHC.Prim.uncheckedShiftRLInt16# a1 a2+{-# NOINLINE int16ToWord16# #-}+int16ToWord16# :: Int16# -> Word16#+int16ToWord16# a1 = GHC.Prim.int16ToWord16# a1+{-# NOINLINE eqInt16# #-}+eqInt16# :: Int16# -> Int16# -> Int#+eqInt16# a1 a2 = GHC.Prim.eqInt16# a1 a2+{-# NOINLINE geInt16# #-}+geInt16# :: Int16# -> Int16# -> Int#+geInt16# a1 a2 = GHC.Prim.geInt16# a1 a2+{-# NOINLINE gtInt16# #-}+gtInt16# :: Int16# -> Int16# -> Int#+gtInt16# a1 a2 = GHC.Prim.gtInt16# a1 a2+{-# NOINLINE leInt16# #-}+leInt16# :: Int16# -> Int16# -> Int#+leInt16# a1 a2 = GHC.Prim.leInt16# a1 a2+{-# NOINLINE ltInt16# #-}+ltInt16# :: Int16# -> Int16# -> Int#+ltInt16# a1 a2 = GHC.Prim.ltInt16# a1 a2+{-# NOINLINE neInt16# #-}+neInt16# :: Int16# -> Int16# -> Int#+neInt16# a1 a2 = GHC.Prim.neInt16# a1 a2+{-# NOINLINE word16ToWord# #-}+word16ToWord# :: Word16# -> Word#+word16ToWord# a1 = GHC.Prim.word16ToWord# a1+{-# NOINLINE wordToWord16# #-}+wordToWord16# :: Word# -> Word16#+wordToWord16# a1 = GHC.Prim.wordToWord16# a1+{-# NOINLINE plusWord16# #-}+plusWord16# :: Word16# -> Word16# -> Word16#+plusWord16# a1 a2 = GHC.Prim.plusWord16# a1 a2+{-# NOINLINE subWord16# #-}+subWord16# :: Word16# -> Word16# -> Word16#+subWord16# a1 a2 = GHC.Prim.subWord16# a1 a2+{-# NOINLINE timesWord16# #-}+timesWord16# :: Word16# -> Word16# -> Word16#+timesWord16# a1 a2 = GHC.Prim.timesWord16# a1 a2+{-# NOINLINE quotWord16# #-}+quotWord16# :: Word16# -> Word16# -> Word16#+quotWord16# a1 a2 = GHC.Prim.quotWord16# a1 a2+{-# NOINLINE remWord16# #-}+remWord16# :: Word16# -> Word16# -> Word16#+remWord16# a1 a2 = GHC.Prim.remWord16# a1 a2+{-# NOINLINE quotRemWord16# #-}+quotRemWord16# :: Word16# -> Word16# -> (# Word16#,Word16# #)+quotRemWord16# a1 a2 = GHC.Prim.quotRemWord16# a1 a2+{-# NOINLINE andWord16# #-}+andWord16# :: Word16# -> Word16# -> Word16#+andWord16# a1 a2 = GHC.Prim.andWord16# a1 a2+{-# NOINLINE orWord16# #-}+orWord16# :: Word16# -> Word16# -> Word16#+orWord16# a1 a2 = GHC.Prim.orWord16# a1 a2+{-# NOINLINE xorWord16# #-}+xorWord16# :: Word16# -> Word16# -> Word16#+xorWord16# a1 a2 = GHC.Prim.xorWord16# a1 a2+{-# NOINLINE notWord16# #-}+notWord16# :: Word16# -> Word16#+notWord16# a1 = GHC.Prim.notWord16# a1+{-# NOINLINE uncheckedShiftLWord16# #-}+uncheckedShiftLWord16# :: Word16# -> Int# -> Word16#+uncheckedShiftLWord16# a1 a2 = GHC.Prim.uncheckedShiftLWord16# a1 a2+{-# NOINLINE uncheckedShiftRLWord16# #-}+uncheckedShiftRLWord16# :: Word16# -> Int# -> Word16#+uncheckedShiftRLWord16# a1 a2 = GHC.Prim.uncheckedShiftRLWord16# a1 a2+{-# NOINLINE word16ToInt16# #-}+word16ToInt16# :: Word16# -> Int16#+word16ToInt16# a1 = GHC.Prim.word16ToInt16# a1+{-# NOINLINE eqWord16# #-}+eqWord16# :: Word16# -> Word16# -> Int#+eqWord16# a1 a2 = GHC.Prim.eqWord16# a1 a2+{-# NOINLINE geWord16# #-}+geWord16# :: Word16# -> Word16# -> Int#+geWord16# a1 a2 = GHC.Prim.geWord16# a1 a2+{-# NOINLINE gtWord16# #-}+gtWord16# :: Word16# -> Word16# -> Int#+gtWord16# a1 a2 = GHC.Prim.gtWord16# a1 a2+{-# NOINLINE leWord16# #-}+leWord16# :: Word16# -> Word16# -> Int#+leWord16# a1 a2 = GHC.Prim.leWord16# a1 a2+{-# NOINLINE ltWord16# #-}+ltWord16# :: Word16# -> Word16# -> Int#+ltWord16# a1 a2 = GHC.Prim.ltWord16# a1 a2+{-# NOINLINE neWord16# #-}+neWord16# :: Word16# -> Word16# -> Int#+neWord16# a1 a2 = GHC.Prim.neWord16# a1 a2+{-# NOINLINE int32ToInt# #-}+int32ToInt# :: Int32# -> Int#+int32ToInt# a1 = GHC.Prim.int32ToInt# a1+{-# NOINLINE intToInt32# #-}+intToInt32# :: Int# -> Int32#+intToInt32# a1 = GHC.Prim.intToInt32# a1+{-# NOINLINE negateInt32# #-}+negateInt32# :: Int32# -> Int32#+negateInt32# a1 = GHC.Prim.negateInt32# a1+{-# NOINLINE plusInt32# #-}+plusInt32# :: Int32# -> Int32# -> Int32#+plusInt32# a1 a2 = GHC.Prim.plusInt32# a1 a2+{-# NOINLINE subInt32# #-}+subInt32# :: Int32# -> Int32# -> Int32#+subInt32# a1 a2 = GHC.Prim.subInt32# a1 a2+{-# NOINLINE timesInt32# #-}+timesInt32# :: Int32# -> Int32# -> Int32#+timesInt32# a1 a2 = GHC.Prim.timesInt32# a1 a2+{-# NOINLINE quotInt32# #-}+quotInt32# :: Int32# -> Int32# -> Int32#+quotInt32# a1 a2 = GHC.Prim.quotInt32# a1 a2+{-# NOINLINE remInt32# #-}+remInt32# :: Int32# -> Int32# -> Int32#+remInt32# a1 a2 = GHC.Prim.remInt32# a1 a2+{-# NOINLINE quotRemInt32# #-}+quotRemInt32# :: Int32# -> Int32# -> (# Int32#,Int32# #)+quotRemInt32# a1 a2 = GHC.Prim.quotRemInt32# a1 a2+{-# NOINLINE uncheckedShiftLInt32# #-}+uncheckedShiftLInt32# :: Int32# -> Int# -> Int32#+uncheckedShiftLInt32# a1 a2 = GHC.Prim.uncheckedShiftLInt32# a1 a2+{-# NOINLINE uncheckedShiftRAInt32# #-}+uncheckedShiftRAInt32# :: Int32# -> Int# -> Int32#+uncheckedShiftRAInt32# a1 a2 = GHC.Prim.uncheckedShiftRAInt32# a1 a2+{-# NOINLINE uncheckedShiftRLInt32# #-}+uncheckedShiftRLInt32# :: Int32# -> Int# -> Int32#+uncheckedShiftRLInt32# a1 a2 = GHC.Prim.uncheckedShiftRLInt32# a1 a2+{-# NOINLINE int32ToWord32# #-}+int32ToWord32# :: Int32# -> Word32#+int32ToWord32# a1 = GHC.Prim.int32ToWord32# a1+{-# NOINLINE eqInt32# #-}+eqInt32# :: Int32# -> Int32# -> Int#+eqInt32# a1 a2 = GHC.Prim.eqInt32# a1 a2+{-# NOINLINE geInt32# #-}+geInt32# :: Int32# -> Int32# -> Int#+geInt32# a1 a2 = GHC.Prim.geInt32# a1 a2+{-# NOINLINE gtInt32# #-}+gtInt32# :: Int32# -> Int32# -> Int#+gtInt32# a1 a2 = GHC.Prim.gtInt32# a1 a2+{-# NOINLINE leInt32# #-}+leInt32# :: Int32# -> Int32# -> Int#+leInt32# a1 a2 = GHC.Prim.leInt32# a1 a2+{-# NOINLINE ltInt32# #-}+ltInt32# :: Int32# -> Int32# -> Int#+ltInt32# a1 a2 = GHC.Prim.ltInt32# a1 a2+{-# NOINLINE neInt32# #-}+neInt32# :: Int32# -> Int32# -> Int#+neInt32# a1 a2 = GHC.Prim.neInt32# a1 a2+{-# NOINLINE word32ToWord# #-}+word32ToWord# :: Word32# -> Word#+word32ToWord# a1 = GHC.Prim.word32ToWord# a1+{-# NOINLINE wordToWord32# #-}+wordToWord32# :: Word# -> Word32#+wordToWord32# a1 = GHC.Prim.wordToWord32# a1+{-# NOINLINE plusWord32# #-}+plusWord32# :: Word32# -> Word32# -> Word32#+plusWord32# a1 a2 = GHC.Prim.plusWord32# a1 a2+{-# NOINLINE subWord32# #-}+subWord32# :: Word32# -> Word32# -> Word32#+subWord32# a1 a2 = GHC.Prim.subWord32# a1 a2+{-# NOINLINE timesWord32# #-}+timesWord32# :: Word32# -> Word32# -> Word32#+timesWord32# a1 a2 = GHC.Prim.timesWord32# a1 a2+{-# NOINLINE quotWord32# #-}+quotWord32# :: Word32# -> Word32# -> Word32#+quotWord32# a1 a2 = GHC.Prim.quotWord32# a1 a2+{-# NOINLINE remWord32# #-}+remWord32# :: Word32# -> Word32# -> Word32#+remWord32# a1 a2 = GHC.Prim.remWord32# a1 a2+{-# NOINLINE quotRemWord32# #-}+quotRemWord32# :: Word32# -> Word32# -> (# Word32#,Word32# #)+quotRemWord32# a1 a2 = GHC.Prim.quotRemWord32# a1 a2+{-# NOINLINE andWord32# #-}+andWord32# :: Word32# -> Word32# -> Word32#+andWord32# a1 a2 = GHC.Prim.andWord32# a1 a2+{-# NOINLINE orWord32# #-}+orWord32# :: Word32# -> Word32# -> Word32#+orWord32# a1 a2 = GHC.Prim.orWord32# a1 a2+{-# NOINLINE xorWord32# #-}+xorWord32# :: Word32# -> Word32# -> Word32#+xorWord32# a1 a2 = GHC.Prim.xorWord32# a1 a2+{-# NOINLINE notWord32# #-}+notWord32# :: Word32# -> Word32#+notWord32# a1 = GHC.Prim.notWord32# a1+{-# NOINLINE uncheckedShiftLWord32# #-}+uncheckedShiftLWord32# :: Word32# -> Int# -> Word32#+uncheckedShiftLWord32# a1 a2 = GHC.Prim.uncheckedShiftLWord32# a1 a2+{-# NOINLINE uncheckedShiftRLWord32# #-}+uncheckedShiftRLWord32# :: Word32# -> Int# -> Word32#+uncheckedShiftRLWord32# a1 a2 = GHC.Prim.uncheckedShiftRLWord32# a1 a2+{-# NOINLINE word32ToInt32# #-}+word32ToInt32# :: Word32# -> Int32#+word32ToInt32# a1 = GHC.Prim.word32ToInt32# a1+{-# NOINLINE eqWord32# #-}+eqWord32# :: Word32# -> Word32# -> Int#+eqWord32# a1 a2 = GHC.Prim.eqWord32# a1 a2+{-# NOINLINE geWord32# #-}+geWord32# :: Word32# -> Word32# -> Int#+geWord32# a1 a2 = GHC.Prim.geWord32# a1 a2+{-# NOINLINE gtWord32# #-}+gtWord32# :: Word32# -> Word32# -> Int#+gtWord32# a1 a2 = GHC.Prim.gtWord32# a1 a2+{-# NOINLINE leWord32# #-}+leWord32# :: Word32# -> Word32# -> Int#+leWord32# a1 a2 = GHC.Prim.leWord32# a1 a2+{-# NOINLINE ltWord32# #-}+ltWord32# :: Word32# -> Word32# -> Int#+ltWord32# a1 a2 = GHC.Prim.ltWord32# a1 a2+{-# NOINLINE neWord32# #-}+neWord32# :: Word32# -> Word32# -> Int#+neWord32# a1 a2 = GHC.Prim.neWord32# a1 a2+{-# NOINLINE int64ToInt# #-}+int64ToInt# :: Int64# -> Int#+int64ToInt# a1 = GHC.Prim.int64ToInt# a1+{-# NOINLINE intToInt64# #-}+intToInt64# :: Int# -> Int64#+intToInt64# a1 = GHC.Prim.intToInt64# a1+{-# NOINLINE negateInt64# #-}+negateInt64# :: Int64# -> Int64#+negateInt64# a1 = GHC.Prim.negateInt64# a1+{-# NOINLINE plusInt64# #-}+plusInt64# :: Int64# -> Int64# -> Int64#+plusInt64# a1 a2 = GHC.Prim.plusInt64# a1 a2+{-# NOINLINE subInt64# #-}+subInt64# :: Int64# -> Int64# -> Int64#+subInt64# a1 a2 = GHC.Prim.subInt64# a1 a2+{-# NOINLINE timesInt64# #-}+timesInt64# :: Int64# -> Int64# -> Int64#+timesInt64# a1 a2 = GHC.Prim.timesInt64# a1 a2+{-# NOINLINE quotInt64# #-}+quotInt64# :: Int64# -> Int64# -> Int64#+quotInt64# a1 a2 = GHC.Prim.quotInt64# a1 a2+{-# NOINLINE remInt64# #-}+remInt64# :: Int64# -> Int64# -> Int64#+remInt64# a1 a2 = GHC.Prim.remInt64# a1 a2+{-# NOINLINE uncheckedIShiftL64# #-}+uncheckedIShiftL64# :: Int64# -> Int# -> Int64#+uncheckedIShiftL64# a1 a2 = GHC.Prim.uncheckedIShiftL64# a1 a2+{-# NOINLINE uncheckedIShiftRA64# #-}+uncheckedIShiftRA64# :: Int64# -> Int# -> Int64#+uncheckedIShiftRA64# a1 a2 = GHC.Prim.uncheckedIShiftRA64# a1 a2+{-# NOINLINE uncheckedIShiftRL64# #-}+uncheckedIShiftRL64# :: Int64# -> Int# -> Int64#+uncheckedIShiftRL64# a1 a2 = GHC.Prim.uncheckedIShiftRL64# a1 a2+{-# NOINLINE int64ToWord64# #-}+int64ToWord64# :: Int64# -> Word64#+int64ToWord64# a1 = GHC.Prim.int64ToWord64# a1+{-# NOINLINE eqInt64# #-}+eqInt64# :: Int64# -> Int64# -> Int#+eqInt64# a1 a2 = GHC.Prim.eqInt64# a1 a2+{-# NOINLINE geInt64# #-}+geInt64# :: Int64# -> Int64# -> Int#+geInt64# a1 a2 = GHC.Prim.geInt64# a1 a2+{-# NOINLINE gtInt64# #-}+gtInt64# :: Int64# -> Int64# -> Int#+gtInt64# a1 a2 = GHC.Prim.gtInt64# a1 a2+{-# NOINLINE leInt64# #-}+leInt64# :: Int64# -> Int64# -> Int#+leInt64# a1 a2 = GHC.Prim.leInt64# a1 a2+{-# NOINLINE ltInt64# #-}+ltInt64# :: Int64# -> Int64# -> Int#+ltInt64# a1 a2 = GHC.Prim.ltInt64# a1 a2+{-# NOINLINE neInt64# #-}+neInt64# :: Int64# -> Int64# -> Int#+neInt64# a1 a2 = GHC.Prim.neInt64# a1 a2+{-# NOINLINE word64ToWord# #-}+word64ToWord# :: Word64# -> Word#+word64ToWord# a1 = GHC.Prim.word64ToWord# a1+{-# NOINLINE wordToWord64# #-}+wordToWord64# :: Word# -> Word64#+wordToWord64# a1 = GHC.Prim.wordToWord64# a1+{-# NOINLINE plusWord64# #-}+plusWord64# :: Word64# -> Word64# -> Word64#+plusWord64# a1 a2 = GHC.Prim.plusWord64# a1 a2+{-# NOINLINE subWord64# #-}+subWord64# :: Word64# -> Word64# -> Word64#+subWord64# a1 a2 = GHC.Prim.subWord64# a1 a2+{-# NOINLINE timesWord64# #-}+timesWord64# :: Word64# -> Word64# -> Word64#+timesWord64# a1 a2 = GHC.Prim.timesWord64# a1 a2+{-# NOINLINE quotWord64# #-}+quotWord64# :: Word64# -> Word64# -> Word64#+quotWord64# a1 a2 = GHC.Prim.quotWord64# a1 a2+{-# NOINLINE remWord64# #-}+remWord64# :: Word64# -> Word64# -> Word64#+remWord64# a1 a2 = GHC.Prim.remWord64# a1 a2+{-# NOINLINE and64# #-}+and64# :: Word64# -> Word64# -> Word64#+and64# a1 a2 = GHC.Prim.and64# a1 a2+{-# NOINLINE or64# #-}+or64# :: Word64# -> Word64# -> Word64#+or64# a1 a2 = GHC.Prim.or64# a1 a2+{-# NOINLINE xor64# #-}+xor64# :: Word64# -> Word64# -> Word64#+xor64# a1 a2 = GHC.Prim.xor64# a1 a2+{-# NOINLINE not64# #-}+not64# :: Word64# -> Word64#+not64# a1 = GHC.Prim.not64# a1+{-# NOINLINE uncheckedShiftL64# #-}+uncheckedShiftL64# :: Word64# -> Int# -> Word64#+uncheckedShiftL64# a1 a2 = GHC.Prim.uncheckedShiftL64# a1 a2+{-# NOINLINE uncheckedShiftRL64# #-}+uncheckedShiftRL64# :: Word64# -> Int# -> Word64#+uncheckedShiftRL64# a1 a2 = GHC.Prim.uncheckedShiftRL64# a1 a2+{-# NOINLINE word64ToInt64# #-}+word64ToInt64# :: Word64# -> Int64#+word64ToInt64# a1 = GHC.Prim.word64ToInt64# a1+{-# NOINLINE eqWord64# #-}+eqWord64# :: Word64# -> Word64# -> Int#+eqWord64# a1 a2 = GHC.Prim.eqWord64# a1 a2+{-# NOINLINE geWord64# #-}+geWord64# :: Word64# -> Word64# -> Int#+geWord64# a1 a2 = GHC.Prim.geWord64# a1 a2+{-# NOINLINE gtWord64# #-}+gtWord64# :: Word64# -> Word64# -> Int#+gtWord64# a1 a2 = GHC.Prim.gtWord64# a1 a2+{-# NOINLINE leWord64# #-}+leWord64# :: Word64# -> Word64# -> Int#+leWord64# a1 a2 = GHC.Prim.leWord64# a1 a2+{-# NOINLINE ltWord64# #-}+ltWord64# :: Word64# -> Word64# -> Int#+ltWord64# a1 a2 = GHC.Prim.ltWord64# a1 a2+{-# NOINLINE neWord64# #-}+neWord64# :: Word64# -> Word64# -> Int#+neWord64# a1 a2 = GHC.Prim.neWord64# a1 a2+{-# NOINLINE (+#) #-}+(+#) :: Int# -> Int# -> Int#+(+#) a1 a2 = (GHC.Prim.+#) a1 a2+{-# NOINLINE (-#) #-}+(-#) :: Int# -> Int# -> Int#+(-#) a1 a2 = (GHC.Prim.-#) a1 a2+{-# NOINLINE (*#) #-}+(*#) :: Int# -> Int# -> Int#+(*#) a1 a2 = (GHC.Prim.*#) a1 a2+{-# NOINLINE timesInt2# #-}+timesInt2# :: Int# -> Int# -> (# Int#,Int#,Int# #)+timesInt2# a1 a2 = GHC.Prim.timesInt2# a1 a2+{-# NOINLINE mulIntMayOflo# #-}+mulIntMayOflo# :: Int# -> Int# -> Int#+mulIntMayOflo# a1 a2 = GHC.Prim.mulIntMayOflo# a1 a2+{-# NOINLINE quotInt# #-}+quotInt# :: Int# -> Int# -> Int#+quotInt# a1 a2 = GHC.Prim.quotInt# a1 a2+{-# NOINLINE remInt# #-}+remInt# :: Int# -> Int# -> Int#+remInt# a1 a2 = GHC.Prim.remInt# a1 a2+{-# NOINLINE quotRemInt# #-}+quotRemInt# :: Int# -> Int# -> (# Int#,Int# #)+quotRemInt# a1 a2 = GHC.Prim.quotRemInt# a1 a2+{-# NOINLINE andI# #-}+andI# :: Int# -> Int# -> Int#+andI# a1 a2 = GHC.Prim.andI# a1 a2+{-# NOINLINE orI# #-}+orI# :: Int# -> Int# -> Int#+orI# a1 a2 = GHC.Prim.orI# a1 a2+{-# NOINLINE xorI# #-}+xorI# :: Int# -> Int# -> Int#+xorI# a1 a2 = GHC.Prim.xorI# a1 a2+{-# NOINLINE notI# #-}+notI# :: Int# -> Int#+notI# a1 = GHC.Prim.notI# a1+{-# NOINLINE negateInt# #-}+negateInt# :: Int# -> Int#+negateInt# a1 = GHC.Prim.negateInt# a1+{-# NOINLINE addIntC# #-}+addIntC# :: Int# -> Int# -> (# Int#,Int# #)+addIntC# a1 a2 = GHC.Prim.addIntC# a1 a2+{-# NOINLINE subIntC# #-}+subIntC# :: Int# -> Int# -> (# Int#,Int# #)+subIntC# a1 a2 = GHC.Prim.subIntC# a1 a2+{-# NOINLINE (>#) #-}+(>#) :: Int# -> Int# -> Int#+(>#) a1 a2 = (GHC.Prim.>#) a1 a2+{-# NOINLINE (>=#) #-}+(>=#) :: Int# -> Int# -> Int#+(>=#) a1 a2 = (GHC.Prim.>=#) a1 a2+{-# NOINLINE (==#) #-}+(==#) :: Int# -> Int# -> Int#+(==#) a1 a2 = (GHC.Prim.==#) a1 a2+{-# NOINLINE (/=#) #-}+(/=#) :: Int# -> Int# -> Int#+(/=#) a1 a2 = (GHC.Prim./=#) a1 a2+{-# NOINLINE (<#) #-}+(<#) :: Int# -> Int# -> Int#+(<#) a1 a2 = (GHC.Prim.<#) a1 a2+{-# NOINLINE (<=#) #-}+(<=#) :: Int# -> Int# -> Int#+(<=#) a1 a2 = (GHC.Prim.<=#) a1 a2+{-# NOINLINE chr# #-}+chr# :: Int# -> Char#+chr# a1 = GHC.Prim.chr# a1+{-# NOINLINE int2Word# #-}+int2Word# :: Int# -> Word#+int2Word# a1 = GHC.Prim.int2Word# a1+{-# NOINLINE int2Float# #-}+int2Float# :: Int# -> Float#+int2Float# a1 = GHC.Prim.int2Float# a1+{-# NOINLINE int2Double# #-}+int2Double# :: Int# -> Double#+int2Double# a1 = GHC.Prim.int2Double# a1+{-# NOINLINE word2Float# #-}+word2Float# :: Word# -> Float#+word2Float# a1 = GHC.Prim.word2Float# a1+{-# NOINLINE word2Double# #-}+word2Double# :: Word# -> Double#+word2Double# a1 = GHC.Prim.word2Double# a1+{-# NOINLINE uncheckedIShiftL# #-}+uncheckedIShiftL# :: Int# -> Int# -> Int#+uncheckedIShiftL# a1 a2 = GHC.Prim.uncheckedIShiftL# a1 a2+{-# NOINLINE uncheckedIShiftRA# #-}+uncheckedIShiftRA# :: Int# -> Int# -> Int#+uncheckedIShiftRA# a1 a2 = GHC.Prim.uncheckedIShiftRA# a1 a2+{-# NOINLINE uncheckedIShiftRL# #-}+uncheckedIShiftRL# :: Int# -> Int# -> Int#+uncheckedIShiftRL# a1 a2 = GHC.Prim.uncheckedIShiftRL# a1 a2+{-# NOINLINE plusWord# #-}+plusWord# :: Word# -> Word# -> Word#+plusWord# a1 a2 = GHC.Prim.plusWord# a1 a2+{-# NOINLINE addWordC# #-}+addWordC# :: Word# -> Word# -> (# Word#,Int# #)+addWordC# a1 a2 = GHC.Prim.addWordC# a1 a2+{-# NOINLINE subWordC# #-}+subWordC# :: Word# -> Word# -> (# Word#,Int# #)+subWordC# a1 a2 = GHC.Prim.subWordC# a1 a2+{-# NOINLINE plusWord2# #-}+plusWord2# :: Word# -> Word# -> (# Word#,Word# #)+plusWord2# a1 a2 = GHC.Prim.plusWord2# a1 a2+{-# NOINLINE minusWord# #-}+minusWord# :: Word# -> Word# -> Word#+minusWord# a1 a2 = GHC.Prim.minusWord# a1 a2+{-# NOINLINE timesWord# #-}+timesWord# :: Word# -> Word# -> Word#+timesWord# a1 a2 = GHC.Prim.timesWord# a1 a2+{-# NOINLINE timesWord2# #-}+timesWord2# :: Word# -> Word# -> (# Word#,Word# #)+timesWord2# a1 a2 = GHC.Prim.timesWord2# a1 a2+{-# NOINLINE quotWord# #-}+quotWord# :: Word# -> Word# -> Word#+quotWord# a1 a2 = GHC.Prim.quotWord# a1 a2+{-# NOINLINE remWord# #-}+remWord# :: Word# -> Word# -> Word#+remWord# a1 a2 = GHC.Prim.remWord# a1 a2+{-# NOINLINE quotRemWord# #-}+quotRemWord# :: Word# -> Word# -> (# Word#,Word# #)+quotRemWord# a1 a2 = GHC.Prim.quotRemWord# a1 a2+{-# NOINLINE quotRemWord2# #-}+quotRemWord2# :: Word# -> Word# -> Word# -> (# Word#,Word# #)+quotRemWord2# a1 a2 a3 = GHC.Prim.quotRemWord2# a1 a2 a3+{-# NOINLINE and# #-}+and# :: Word# -> Word# -> Word#+and# a1 a2 = GHC.Prim.and# a1 a2+{-# NOINLINE or# #-}+or# :: Word# -> Word# -> Word#+or# a1 a2 = GHC.Prim.or# a1 a2+{-# NOINLINE xor# #-}+xor# :: Word# -> Word# -> Word#+xor# a1 a2 = GHC.Prim.xor# a1 a2+{-# NOINLINE not# #-}+not# :: Word# -> Word#+not# a1 = GHC.Prim.not# a1+{-# NOINLINE uncheckedShiftL# #-}+uncheckedShiftL# :: Word# -> Int# -> Word#+uncheckedShiftL# a1 a2 = GHC.Prim.uncheckedShiftL# a1 a2+{-# NOINLINE uncheckedShiftRL# #-}+uncheckedShiftRL# :: Word# -> Int# -> Word#+uncheckedShiftRL# a1 a2 = GHC.Prim.uncheckedShiftRL# a1 a2+{-# NOINLINE word2Int# #-}+word2Int# :: Word# -> Int#+word2Int# a1 = GHC.Prim.word2Int# a1+{-# NOINLINE gtWord# #-}+gtWord# :: Word# -> Word# -> Int#+gtWord# a1 a2 = GHC.Prim.gtWord# a1 a2+{-# NOINLINE geWord# #-}+geWord# :: Word# -> Word# -> Int#+geWord# a1 a2 = GHC.Prim.geWord# a1 a2+{-# NOINLINE eqWord# #-}+eqWord# :: Word# -> Word# -> Int#+eqWord# a1 a2 = GHC.Prim.eqWord# a1 a2+{-# NOINLINE neWord# #-}+neWord# :: Word# -> Word# -> Int#+neWord# a1 a2 = GHC.Prim.neWord# a1 a2+{-# NOINLINE ltWord# #-}+ltWord# :: Word# -> Word# -> Int#+ltWord# a1 a2 = GHC.Prim.ltWord# a1 a2+{-# NOINLINE leWord# #-}+leWord# :: Word# -> Word# -> Int#+leWord# a1 a2 = GHC.Prim.leWord# a1 a2+{-# NOINLINE popCnt8# #-}+popCnt8# :: Word# -> Word#+popCnt8# a1 = GHC.Prim.popCnt8# a1+{-# NOINLINE popCnt16# #-}+popCnt16# :: Word# -> Word#+popCnt16# a1 = GHC.Prim.popCnt16# a1+{-# NOINLINE popCnt32# #-}+popCnt32# :: Word# -> Word#+popCnt32# a1 = GHC.Prim.popCnt32# a1+{-# NOINLINE popCnt64# #-}+popCnt64# :: Word64# -> Word#+popCnt64# a1 = GHC.Prim.popCnt64# a1+{-# NOINLINE popCnt# #-}+popCnt# :: Word# -> Word#+popCnt# a1 = GHC.Prim.popCnt# a1+{-# NOINLINE pdep8# #-}+pdep8# :: Word# -> Word# -> Word#+pdep8# a1 a2 = GHC.Prim.pdep8# a1 a2+{-# NOINLINE pdep16# #-}+pdep16# :: Word# -> Word# -> Word#+pdep16# a1 a2 = GHC.Prim.pdep16# a1 a2+{-# NOINLINE pdep32# #-}+pdep32# :: Word# -> Word# -> Word#+pdep32# a1 a2 = GHC.Prim.pdep32# a1 a2+{-# NOINLINE pdep64# #-}+pdep64# :: Word64# -> Word64# -> Word64#+pdep64# a1 a2 = GHC.Prim.pdep64# a1 a2+{-# NOINLINE pdep# #-}+pdep# :: Word# -> Word# -> Word#+pdep# a1 a2 = GHC.Prim.pdep# a1 a2+{-# NOINLINE pext8# #-}+pext8# :: Word# -> Word# -> Word#+pext8# a1 a2 = GHC.Prim.pext8# a1 a2+{-# NOINLINE pext16# #-}+pext16# :: Word# -> Word# -> Word#+pext16# a1 a2 = GHC.Prim.pext16# a1 a2+{-# NOINLINE pext32# #-}+pext32# :: Word# -> Word# -> Word#+pext32# a1 a2 = GHC.Prim.pext32# a1 a2+{-# NOINLINE pext64# #-}+pext64# :: Word64# -> Word64# -> Word64#+pext64# a1 a2 = GHC.Prim.pext64# a1 a2+{-# NOINLINE pext# #-}+pext# :: Word# -> Word# -> Word#+pext# a1 a2 = GHC.Prim.pext# a1 a2+{-# NOINLINE clz8# #-}+clz8# :: Word# -> Word#+clz8# a1 = GHC.Prim.clz8# a1+{-# NOINLINE clz16# #-}+clz16# :: Word# -> Word#+clz16# a1 = GHC.Prim.clz16# a1+{-# NOINLINE clz32# #-}+clz32# :: Word# -> Word#+clz32# a1 = GHC.Prim.clz32# a1+{-# NOINLINE clz64# #-}+clz64# :: Word64# -> Word#+clz64# a1 = GHC.Prim.clz64# a1+{-# NOINLINE clz# #-}+clz# :: Word# -> Word#+clz# a1 = GHC.Prim.clz# a1+{-# NOINLINE ctz8# #-}+ctz8# :: Word# -> Word#+ctz8# a1 = GHC.Prim.ctz8# a1+{-# NOINLINE ctz16# #-}+ctz16# :: Word# -> Word#+ctz16# a1 = GHC.Prim.ctz16# a1+{-# NOINLINE ctz32# #-}+ctz32# :: Word# -> Word#+ctz32# a1 = GHC.Prim.ctz32# a1+{-# NOINLINE ctz64# #-}+ctz64# :: Word64# -> Word#+ctz64# a1 = GHC.Prim.ctz64# a1+{-# NOINLINE ctz# #-}+ctz# :: Word# -> Word#+ctz# a1 = GHC.Prim.ctz# a1+{-# NOINLINE byteSwap16# #-}+byteSwap16# :: Word# -> Word#+byteSwap16# a1 = GHC.Prim.byteSwap16# a1+{-# NOINLINE byteSwap32# #-}+byteSwap32# :: Word# -> Word#+byteSwap32# a1 = GHC.Prim.byteSwap32# a1+{-# NOINLINE byteSwap64# #-}+byteSwap64# :: Word64# -> Word64#+byteSwap64# a1 = GHC.Prim.byteSwap64# a1+{-# NOINLINE byteSwap# #-}+byteSwap# :: Word# -> Word#+byteSwap# a1 = GHC.Prim.byteSwap# a1+{-# NOINLINE bitReverse8# #-}+bitReverse8# :: Word# -> Word#+bitReverse8# a1 = GHC.Prim.bitReverse8# a1+{-# NOINLINE bitReverse16# #-}+bitReverse16# :: Word# -> Word#+bitReverse16# a1 = GHC.Prim.bitReverse16# a1+{-# NOINLINE bitReverse32# #-}+bitReverse32# :: Word# -> Word#+bitReverse32# a1 = GHC.Prim.bitReverse32# a1+{-# NOINLINE bitReverse64# #-}+bitReverse64# :: Word64# -> Word64#+bitReverse64# a1 = GHC.Prim.bitReverse64# a1+{-# NOINLINE bitReverse# #-}+bitReverse# :: Word# -> Word#+bitReverse# a1 = GHC.Prim.bitReverse# a1+{-# NOINLINE narrow8Int# #-}+narrow8Int# :: Int# -> Int#+narrow8Int# a1 = GHC.Prim.narrow8Int# a1+{-# NOINLINE narrow16Int# #-}+narrow16Int# :: Int# -> Int#+narrow16Int# a1 = GHC.Prim.narrow16Int# a1+{-# NOINLINE narrow32Int# #-}+narrow32Int# :: Int# -> Int#+narrow32Int# a1 = GHC.Prim.narrow32Int# a1+{-# NOINLINE narrow8Word# #-}+narrow8Word# :: Word# -> Word#+narrow8Word# a1 = GHC.Prim.narrow8Word# a1+{-# NOINLINE narrow16Word# #-}+narrow16Word# :: Word# -> Word#+narrow16Word# a1 = GHC.Prim.narrow16Word# a1+{-# NOINLINE narrow32Word# #-}+narrow32Word# :: Word# -> Word#+narrow32Word# a1 = GHC.Prim.narrow32Word# a1+{-# NOINLINE (>##) #-}+(>##) :: Double# -> Double# -> Int#+(>##) a1 a2 = (GHC.Prim.>##) a1 a2+{-# NOINLINE (>=##) #-}+(>=##) :: Double# -> Double# -> Int#+(>=##) a1 a2 = (GHC.Prim.>=##) a1 a2+{-# NOINLINE (==##) #-}+(==##) :: Double# -> Double# -> Int#+(==##) a1 a2 = (GHC.Prim.==##) a1 a2+{-# NOINLINE (/=##) #-}+(/=##) :: Double# -> Double# -> Int#+(/=##) a1 a2 = (GHC.Prim./=##) a1 a2+{-# NOINLINE (<##) #-}+(<##) :: Double# -> Double# -> Int#+(<##) a1 a2 = (GHC.Prim.<##) a1 a2+{-# NOINLINE (<=##) #-}+(<=##) :: Double# -> Double# -> Int#+(<=##) a1 a2 = (GHC.Prim.<=##) a1 a2+{-# NOINLINE minDouble# #-}+minDouble# :: Double# -> Double# -> Double#+minDouble# a1 a2 = GHC.Prim.minDouble# a1 a2+{-# NOINLINE maxDouble# #-}+maxDouble# :: Double# -> Double# -> Double#+maxDouble# a1 a2 = GHC.Prim.maxDouble# a1 a2+{-# NOINLINE (+##) #-}+(+##) :: Double# -> Double# -> Double#+(+##) a1 a2 = (GHC.Prim.+##) a1 a2+{-# NOINLINE (-##) #-}+(-##) :: Double# -> Double# -> Double#+(-##) a1 a2 = (GHC.Prim.-##) a1 a2+{-# NOINLINE (*##) #-}+(*##) :: Double# -> Double# -> Double#+(*##) a1 a2 = (GHC.Prim.*##) a1 a2+{-# NOINLINE (/##) #-}+(/##) :: Double# -> Double# -> Double#+(/##) a1 a2 = (GHC.Prim./##) a1 a2+{-# NOINLINE negateDouble# #-}+negateDouble# :: Double# -> Double#+negateDouble# a1 = GHC.Prim.negateDouble# a1+{-# NOINLINE fabsDouble# #-}+fabsDouble# :: Double# -> Double#+fabsDouble# a1 = GHC.Prim.fabsDouble# a1+{-# NOINLINE double2Int# #-}+double2Int# :: Double# -> Int#+double2Int# a1 = GHC.Prim.double2Int# a1+{-# NOINLINE double2Float# #-}+double2Float# :: Double# -> Float#+double2Float# a1 = GHC.Prim.double2Float# a1+{-# NOINLINE expDouble# #-}+expDouble# :: Double# -> Double#+expDouble# a1 = GHC.Prim.expDouble# a1+{-# NOINLINE expm1Double# #-}+expm1Double# :: Double# -> Double#+expm1Double# a1 = GHC.Prim.expm1Double# a1+{-# NOINLINE logDouble# #-}+logDouble# :: Double# -> Double#+logDouble# a1 = GHC.Prim.logDouble# a1+{-# NOINLINE log1pDouble# #-}+log1pDouble# :: Double# -> Double#+log1pDouble# a1 = GHC.Prim.log1pDouble# a1+{-# NOINLINE sqrtDouble# #-}+sqrtDouble# :: Double# -> Double#+sqrtDouble# a1 = GHC.Prim.sqrtDouble# a1+{-# NOINLINE sinDouble# #-}+sinDouble# :: Double# -> Double#+sinDouble# a1 = GHC.Prim.sinDouble# a1+{-# NOINLINE cosDouble# #-}+cosDouble# :: Double# -> Double#+cosDouble# a1 = GHC.Prim.cosDouble# a1+{-# NOINLINE tanDouble# #-}+tanDouble# :: Double# -> Double#+tanDouble# a1 = GHC.Prim.tanDouble# a1+{-# NOINLINE asinDouble# #-}+asinDouble# :: Double# -> Double#+asinDouble# a1 = GHC.Prim.asinDouble# a1+{-# NOINLINE acosDouble# #-}+acosDouble# :: Double# -> Double#+acosDouble# a1 = GHC.Prim.acosDouble# a1+{-# NOINLINE atanDouble# #-}+atanDouble# :: Double# -> Double#+atanDouble# a1 = GHC.Prim.atanDouble# a1+{-# NOINLINE sinhDouble# #-}+sinhDouble# :: Double# -> Double#+sinhDouble# a1 = GHC.Prim.sinhDouble# a1+{-# NOINLINE coshDouble# #-}+coshDouble# :: Double# -> Double#+coshDouble# a1 = GHC.Prim.coshDouble# a1+{-# NOINLINE tanhDouble# #-}+tanhDouble# :: Double# -> Double#+tanhDouble# a1 = GHC.Prim.tanhDouble# a1+{-# NOINLINE asinhDouble# #-}+asinhDouble# :: Double# -> Double#+asinhDouble# a1 = GHC.Prim.asinhDouble# a1+{-# NOINLINE acoshDouble# #-}+acoshDouble# :: Double# -> Double#+acoshDouble# a1 = GHC.Prim.acoshDouble# a1+{-# NOINLINE atanhDouble# #-}+atanhDouble# :: Double# -> Double#+atanhDouble# a1 = GHC.Prim.atanhDouble# a1+{-# NOINLINE (**##) #-}+(**##) :: Double# -> Double# -> Double#+(**##) a1 a2 = (GHC.Prim.**##) a1 a2+{-# NOINLINE decodeDouble_2Int# #-}+decodeDouble_2Int# :: Double# -> (# Int#,Word#,Word#,Int# #)+decodeDouble_2Int# a1 = GHC.Prim.decodeDouble_2Int# a1+{-# NOINLINE decodeDouble_Int64# #-}+decodeDouble_Int64# :: Double# -> (# Int64#,Int# #)+decodeDouble_Int64# a1 = GHC.Prim.decodeDouble_Int64# a1+{-# NOINLINE castDoubleToWord64# #-}+castDoubleToWord64# :: Double# -> Word64#+castDoubleToWord64# a1 = GHC.Prim.castDoubleToWord64# a1+{-# NOINLINE castWord64ToDouble# #-}+castWord64ToDouble# :: Word64# -> Double#+castWord64ToDouble# a1 = GHC.Prim.castWord64ToDouble# a1+{-# NOINLINE gtFloat# #-}+gtFloat# :: Float# -> Float# -> Int#+gtFloat# a1 a2 = GHC.Prim.gtFloat# a1 a2+{-# NOINLINE geFloat# #-}+geFloat# :: Float# -> Float# -> Int#+geFloat# a1 a2 = GHC.Prim.geFloat# a1 a2+{-# NOINLINE eqFloat# #-}+eqFloat# :: Float# -> Float# -> Int#+eqFloat# a1 a2 = GHC.Prim.eqFloat# a1 a2+{-# NOINLINE neFloat# #-}+neFloat# :: Float# -> Float# -> Int#+neFloat# a1 a2 = GHC.Prim.neFloat# a1 a2+{-# NOINLINE ltFloat# #-}+ltFloat# :: Float# -> Float# -> Int#+ltFloat# a1 a2 = GHC.Prim.ltFloat# a1 a2+{-# NOINLINE leFloat# #-}+leFloat# :: Float# -> Float# -> Int#+leFloat# a1 a2 = GHC.Prim.leFloat# a1 a2+{-# NOINLINE minFloat# #-}+minFloat# :: Float# -> Float# -> Float#+minFloat# a1 a2 = GHC.Prim.minFloat# a1 a2+{-# NOINLINE maxFloat# #-}+maxFloat# :: Float# -> Float# -> Float#+maxFloat# a1 a2 = GHC.Prim.maxFloat# a1 a2+{-# NOINLINE plusFloat# #-}+plusFloat# :: Float# -> Float# -> Float#+plusFloat# a1 a2 = GHC.Prim.plusFloat# a1 a2+{-# NOINLINE minusFloat# #-}+minusFloat# :: Float# -> Float# -> Float#+minusFloat# a1 a2 = GHC.Prim.minusFloat# a1 a2+{-# NOINLINE timesFloat# #-}+timesFloat# :: Float# -> Float# -> Float#+timesFloat# a1 a2 = GHC.Prim.timesFloat# a1 a2+{-# NOINLINE divideFloat# #-}+divideFloat# :: Float# -> Float# -> Float#+divideFloat# a1 a2 = GHC.Prim.divideFloat# a1 a2+{-# NOINLINE negateFloat# #-}+negateFloat# :: Float# -> Float#+negateFloat# a1 = GHC.Prim.negateFloat# a1+{-# NOINLINE fabsFloat# #-}+fabsFloat# :: Float# -> Float#+fabsFloat# a1 = GHC.Prim.fabsFloat# a1+{-# NOINLINE float2Int# #-}+float2Int# :: Float# -> Int#+float2Int# a1 = GHC.Prim.float2Int# a1+{-# NOINLINE expFloat# #-}+expFloat# :: Float# -> Float#+expFloat# a1 = GHC.Prim.expFloat# a1+{-# NOINLINE expm1Float# #-}+expm1Float# :: Float# -> Float#+expm1Float# a1 = GHC.Prim.expm1Float# a1+{-# NOINLINE logFloat# #-}+logFloat# :: Float# -> Float#+logFloat# a1 = GHC.Prim.logFloat# a1+{-# NOINLINE log1pFloat# #-}+log1pFloat# :: Float# -> Float#+log1pFloat# a1 = GHC.Prim.log1pFloat# a1+{-# NOINLINE sqrtFloat# #-}+sqrtFloat# :: Float# -> Float#+sqrtFloat# a1 = GHC.Prim.sqrtFloat# a1+{-# NOINLINE sinFloat# #-}+sinFloat# :: Float# -> Float#+sinFloat# a1 = GHC.Prim.sinFloat# a1+{-# NOINLINE cosFloat# #-}+cosFloat# :: Float# -> Float#+cosFloat# a1 = GHC.Prim.cosFloat# a1+{-# NOINLINE tanFloat# #-}+tanFloat# :: Float# -> Float#+tanFloat# a1 = GHC.Prim.tanFloat# a1+{-# NOINLINE asinFloat# #-}+asinFloat# :: Float# -> Float#+asinFloat# a1 = GHC.Prim.asinFloat# a1+{-# NOINLINE acosFloat# #-}+acosFloat# :: Float# -> Float#+acosFloat# a1 = GHC.Prim.acosFloat# a1+{-# NOINLINE atanFloat# #-}+atanFloat# :: Float# -> Float#+atanFloat# a1 = GHC.Prim.atanFloat# a1+{-# NOINLINE sinhFloat# #-}+sinhFloat# :: Float# -> Float#+sinhFloat# a1 = GHC.Prim.sinhFloat# a1+{-# NOINLINE coshFloat# #-}+coshFloat# :: Float# -> Float#+coshFloat# a1 = GHC.Prim.coshFloat# a1+{-# NOINLINE tanhFloat# #-}+tanhFloat# :: Float# -> Float#+tanhFloat# a1 = GHC.Prim.tanhFloat# a1+{-# NOINLINE asinhFloat# #-}+asinhFloat# :: Float# -> Float#+asinhFloat# a1 = GHC.Prim.asinhFloat# a1+{-# NOINLINE acoshFloat# #-}+acoshFloat# :: Float# -> Float#+acoshFloat# a1 = GHC.Prim.acoshFloat# a1+{-# NOINLINE atanhFloat# #-}+atanhFloat# :: Float# -> Float#+atanhFloat# a1 = GHC.Prim.atanhFloat# a1+{-# NOINLINE powerFloat# #-}+powerFloat# :: Float# -> Float# -> Float#+powerFloat# a1 a2 = GHC.Prim.powerFloat# a1 a2+{-# NOINLINE float2Double# #-}+float2Double# :: Float# -> Double#+float2Double# a1 = GHC.Prim.float2Double# a1+{-# NOINLINE decodeFloat_Int# #-}+decodeFloat_Int# :: Float# -> (# Int#,Int# #)+decodeFloat_Int# a1 = GHC.Prim.decodeFloat_Int# a1+{-# NOINLINE castFloatToWord32# #-}+castFloatToWord32# :: Float# -> Word32#+castFloatToWord32# a1 = GHC.Prim.castFloatToWord32# a1+{-# NOINLINE castWord32ToFloat# #-}+castWord32ToFloat# :: Word32# -> Float#+castWord32ToFloat# a1 = GHC.Prim.castWord32ToFloat# a1+{-# NOINLINE fmaddFloat# #-}+fmaddFloat# :: Float# -> Float# -> Float# -> Float#+fmaddFloat# a1 a2 a3 = GHC.Prim.fmaddFloat# a1 a2 a3+{-# NOINLINE fmsubFloat# #-}+fmsubFloat# :: Float# -> Float# -> Float# -> Float#+fmsubFloat# a1 a2 a3 = GHC.Prim.fmsubFloat# a1 a2 a3+{-# NOINLINE fnmaddFloat# #-}+fnmaddFloat# :: Float# -> Float# -> Float# -> Float#+fnmaddFloat# a1 a2 a3 = GHC.Prim.fnmaddFloat# a1 a2 a3+{-# NOINLINE fnmsubFloat# #-}+fnmsubFloat# :: Float# -> Float# -> Float# -> Float#+fnmsubFloat# a1 a2 a3 = GHC.Prim.fnmsubFloat# a1 a2 a3+{-# NOINLINE fmaddDouble# #-}+fmaddDouble# :: Double# -> Double# -> Double# -> Double#+fmaddDouble# a1 a2 a3 = GHC.Prim.fmaddDouble# a1 a2 a3+{-# NOINLINE fmsubDouble# #-}+fmsubDouble# :: Double# -> Double# -> Double# -> Double#+fmsubDouble# a1 a2 a3 = GHC.Prim.fmsubDouble# a1 a2 a3+{-# NOINLINE fnmaddDouble# #-}+fnmaddDouble# :: Double# -> Double# -> Double# -> Double#+fnmaddDouble# a1 a2 a3 = GHC.Prim.fnmaddDouble# a1 a2 a3+{-# NOINLINE fnmsubDouble# #-}+fnmsubDouble# :: Double# -> Double# -> Double# -> Double#+fnmsubDouble# a1 a2 a3 = GHC.Prim.fnmsubDouble# a1 a2 a3+{-# NOINLINE newArray# #-}+newArray# :: Int# -> a_levpoly -> State# s -> (# State# s,MutableArray# s a_levpoly #)+newArray# a1 a2 a3 = GHC.Prim.newArray# a1 a2 a3+{-# NOINLINE readArray# #-}+readArray# :: MutableArray# s a_levpoly -> Int# -> State# s -> (# State# s,a_levpoly #)+readArray# a1 a2 a3 = GHC.Prim.readArray# a1 a2 a3+{-# NOINLINE writeArray# #-}+writeArray# :: MutableArray# s a_levpoly -> Int# -> a_levpoly -> State# s -> State# s+writeArray# a1 a2 a3 a4 = GHC.Prim.writeArray# a1 a2 a3 a4+{-# NOINLINE sizeofArray# #-}+sizeofArray# :: Array# a_levpoly -> Int#+sizeofArray# a1 = GHC.Prim.sizeofArray# a1+{-# NOINLINE sizeofMutableArray# #-}+sizeofMutableArray# :: MutableArray# s a_levpoly -> Int#+sizeofMutableArray# a1 = GHC.Prim.sizeofMutableArray# a1+{-# NOINLINE indexArray# #-}+indexArray# :: Array# a_levpoly -> Int# -> (# a_levpoly #)+indexArray# a1 a2 = GHC.Prim.indexArray# a1 a2+{-# NOINLINE unsafeFreezeArray# #-}+unsafeFreezeArray# :: MutableArray# s a_levpoly -> State# s -> (# State# s,Array# a_levpoly #)+unsafeFreezeArray# a1 a2 = GHC.Prim.unsafeFreezeArray# a1 a2+{-# NOINLINE unsafeThawArray# #-}+unsafeThawArray# :: Array# a_levpoly -> State# s -> (# State# s,MutableArray# s a_levpoly #)+unsafeThawArray# a1 a2 = GHC.Prim.unsafeThawArray# a1 a2+{-# NOINLINE copyArray# #-}+copyArray# :: Array# a_levpoly -> Int# -> MutableArray# s a_levpoly -> Int# -> Int# -> State# s -> State# s+copyArray# a1 a2 a3 a4 a5 a6 = GHC.Prim.copyArray# a1 a2 a3 a4 a5 a6+{-# NOINLINE copyMutableArray# #-}+copyMutableArray# :: MutableArray# s a_levpoly -> Int# -> MutableArray# s a_levpoly -> Int# -> Int# -> State# s -> State# s+copyMutableArray# a1 a2 a3 a4 a5 a6 = GHC.Prim.copyMutableArray# a1 a2 a3 a4 a5 a6+{-# NOINLINE cloneArray# #-}+cloneArray# :: Array# a_levpoly -> Int# -> Int# -> Array# a_levpoly+cloneArray# a1 a2 a3 = GHC.Prim.cloneArray# a1 a2 a3+{-# NOINLINE cloneMutableArray# #-}+cloneMutableArray# :: MutableArray# s a_levpoly -> Int# -> Int# -> State# s -> (# State# s,MutableArray# s a_levpoly #)+cloneMutableArray# a1 a2 a3 a4 = GHC.Prim.cloneMutableArray# a1 a2 a3 a4+{-# NOINLINE freezeArray# #-}+freezeArray# :: MutableArray# s a_levpoly -> Int# -> Int# -> State# s -> (# State# s,Array# a_levpoly #)+freezeArray# a1 a2 a3 a4 = GHC.Prim.freezeArray# a1 a2 a3 a4+{-# NOINLINE thawArray# #-}+thawArray# :: Array# a_levpoly -> Int# -> Int# -> State# s -> (# State# s,MutableArray# s a_levpoly #)+thawArray# a1 a2 a3 a4 = GHC.Prim.thawArray# a1 a2 a3 a4+{-# NOINLINE casArray# #-}+casArray# :: MutableArray# s a_levpoly -> Int# -> a_levpoly -> a_levpoly -> State# s -> (# State# s,Int#,a_levpoly #)+casArray# a1 a2 a3 a4 a5 = GHC.Prim.casArray# a1 a2 a3 a4 a5+{-# NOINLINE newSmallArray# #-}+newSmallArray# :: Int# -> a_levpoly -> State# s -> (# State# s,SmallMutableArray# s a_levpoly #)+newSmallArray# a1 a2 a3 = GHC.Prim.newSmallArray# a1 a2 a3+{-# NOINLINE shrinkSmallMutableArray# #-}+shrinkSmallMutableArray# :: SmallMutableArray# s a_levpoly -> Int# -> State# s -> State# s+shrinkSmallMutableArray# a1 a2 a3 = GHC.Prim.shrinkSmallMutableArray# a1 a2 a3+{-# NOINLINE readSmallArray# #-}+readSmallArray# :: SmallMutableArray# s a_levpoly -> Int# -> State# s -> (# State# s,a_levpoly #)+readSmallArray# a1 a2 a3 = GHC.Prim.readSmallArray# a1 a2 a3+{-# NOINLINE writeSmallArray# #-}+writeSmallArray# :: SmallMutableArray# s a_levpoly -> Int# -> a_levpoly -> State# s -> State# s+writeSmallArray# a1 a2 a3 a4 = GHC.Prim.writeSmallArray# a1 a2 a3 a4+{-# NOINLINE sizeofSmallArray# #-}+sizeofSmallArray# :: SmallArray# a_levpoly -> Int#+sizeofSmallArray# a1 = GHC.Prim.sizeofSmallArray# a1+{-# NOINLINE sizeofSmallMutableArray# #-}+sizeofSmallMutableArray# :: SmallMutableArray# s a_levpoly -> Int#+sizeofSmallMutableArray# a1 = GHC.Prim.sizeofSmallMutableArray# a1+{-# NOINLINE getSizeofSmallMutableArray# #-}+getSizeofSmallMutableArray# :: SmallMutableArray# s a_levpoly -> State# s -> (# State# s,Int# #)+getSizeofSmallMutableArray# a1 a2 = GHC.Prim.getSizeofSmallMutableArray# a1 a2+{-# NOINLINE indexSmallArray# #-}+indexSmallArray# :: SmallArray# a_levpoly -> Int# -> (# a_levpoly #)+indexSmallArray# a1 a2 = GHC.Prim.indexSmallArray# a1 a2+{-# NOINLINE unsafeFreezeSmallArray# #-}+unsafeFreezeSmallArray# :: SmallMutableArray# s a_levpoly -> State# s -> (# State# s,SmallArray# a_levpoly #)+unsafeFreezeSmallArray# a1 a2 = GHC.Prim.unsafeFreezeSmallArray# a1 a2+{-# NOINLINE unsafeThawSmallArray# #-}+unsafeThawSmallArray# :: SmallArray# a_levpoly -> State# s -> (# State# s,SmallMutableArray# s a_levpoly #)+unsafeThawSmallArray# a1 a2 = GHC.Prim.unsafeThawSmallArray# a1 a2+{-# NOINLINE copySmallArray# #-}+copySmallArray# :: SmallArray# a_levpoly -> Int# -> SmallMutableArray# s a_levpoly -> Int# -> Int# -> State# s -> State# s+copySmallArray# a1 a2 a3 a4 a5 a6 = GHC.Prim.copySmallArray# a1 a2 a3 a4 a5 a6+{-# NOINLINE copySmallMutableArray# #-}+copySmallMutableArray# :: SmallMutableArray# s a_levpoly -> Int# -> SmallMutableArray# s a_levpoly -> Int# -> Int# -> State# s -> State# s+copySmallMutableArray# a1 a2 a3 a4 a5 a6 = GHC.Prim.copySmallMutableArray# a1 a2 a3 a4 a5 a6+{-# NOINLINE cloneSmallArray# #-}+cloneSmallArray# :: SmallArray# a_levpoly -> Int# -> Int# -> SmallArray# a_levpoly+cloneSmallArray# a1 a2 a3 = GHC.Prim.cloneSmallArray# a1 a2 a3+{-# NOINLINE cloneSmallMutableArray# #-}+cloneSmallMutableArray# :: SmallMutableArray# s a_levpoly -> Int# -> Int# -> State# s -> (# State# s,SmallMutableArray# s a_levpoly #)+cloneSmallMutableArray# a1 a2 a3 a4 = GHC.Prim.cloneSmallMutableArray# a1 a2 a3 a4+{-# NOINLINE freezeSmallArray# #-}+freezeSmallArray# :: SmallMutableArray# s a_levpoly -> Int# -> Int# -> State# s -> (# State# s,SmallArray# a_levpoly #)+freezeSmallArray# a1 a2 a3 a4 = GHC.Prim.freezeSmallArray# a1 a2 a3 a4+{-# NOINLINE thawSmallArray# #-}+thawSmallArray# :: SmallArray# a_levpoly -> Int# -> Int# -> State# s -> (# State# s,SmallMutableArray# s a_levpoly #)+thawSmallArray# a1 a2 a3 a4 = GHC.Prim.thawSmallArray# a1 a2 a3 a4+{-# NOINLINE casSmallArray# #-}+casSmallArray# :: SmallMutableArray# s a_levpoly -> Int# -> a_levpoly -> a_levpoly -> State# s -> (# State# s,Int#,a_levpoly #)+casSmallArray# a1 a2 a3 a4 a5 = GHC.Prim.casSmallArray# a1 a2 a3 a4 a5+{-# NOINLINE newByteArray# #-}+newByteArray# :: Int# -> State# s -> (# State# s,MutableByteArray# s #)+newByteArray# a1 a2 = GHC.Prim.newByteArray# a1 a2+{-# NOINLINE newPinnedByteArray# #-}+newPinnedByteArray# :: Int# -> State# s -> (# State# s,MutableByteArray# s #)+newPinnedByteArray# a1 a2 = GHC.Prim.newPinnedByteArray# a1 a2+{-# NOINLINE newAlignedPinnedByteArray# #-}+newAlignedPinnedByteArray# :: Int# -> Int# -> State# s -> (# State# s,MutableByteArray# s #)+newAlignedPinnedByteArray# a1 a2 a3 = GHC.Prim.newAlignedPinnedByteArray# a1 a2 a3+{-# NOINLINE isMutableByteArrayPinned# #-}+isMutableByteArrayPinned# :: MutableByteArray# s -> Int#+isMutableByteArrayPinned# a1 = GHC.Prim.isMutableByteArrayPinned# a1+{-# NOINLINE isByteArrayPinned# #-}+isByteArrayPinned# :: ByteArray# -> Int#+isByteArrayPinned# a1 = GHC.Prim.isByteArrayPinned# a1+{-# NOINLINE isByteArrayWeaklyPinned# #-}+isByteArrayWeaklyPinned# :: ByteArray# -> Int#+isByteArrayWeaklyPinned# a1 = GHC.Prim.isByteArrayWeaklyPinned# a1+{-# NOINLINE isMutableByteArrayWeaklyPinned# #-}+isMutableByteArrayWeaklyPinned# :: MutableByteArray# s -> Int#+isMutableByteArrayWeaklyPinned# a1 = GHC.Prim.isMutableByteArrayWeaklyPinned# a1+{-# NOINLINE byteArrayContents# #-}+byteArrayContents# :: ByteArray# -> Addr#+byteArrayContents# a1 = GHC.Prim.byteArrayContents# a1+{-# NOINLINE mutableByteArrayContents# #-}+mutableByteArrayContents# :: MutableByteArray# s -> Addr#+mutableByteArrayContents# a1 = GHC.Prim.mutableByteArrayContents# a1+{-# NOINLINE shrinkMutableByteArray# #-}+shrinkMutableByteArray# :: MutableByteArray# s -> Int# -> State# s -> State# s+shrinkMutableByteArray# a1 a2 a3 = GHC.Prim.shrinkMutableByteArray# a1 a2 a3+{-# NOINLINE resizeMutableByteArray# #-}+resizeMutableByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,MutableByteArray# s #)+resizeMutableByteArray# a1 a2 a3 = GHC.Prim.resizeMutableByteArray# a1 a2 a3+{-# NOINLINE unsafeFreezeByteArray# #-}+unsafeFreezeByteArray# :: MutableByteArray# s -> State# s -> (# State# s,ByteArray# #)+unsafeFreezeByteArray# a1 a2 = GHC.Prim.unsafeFreezeByteArray# a1 a2+{-# NOINLINE unsafeThawByteArray# #-}+unsafeThawByteArray# :: ByteArray# -> State# s -> (# State# s,MutableByteArray# s #)+unsafeThawByteArray# a1 a2 = GHC.Prim.unsafeThawByteArray# a1 a2+{-# NOINLINE sizeofByteArray# #-}+sizeofByteArray# :: ByteArray# -> Int#+sizeofByteArray# a1 = GHC.Prim.sizeofByteArray# a1+{-# NOINLINE sizeofMutableByteArray# #-}+sizeofMutableByteArray# :: MutableByteArray# s -> Int#+sizeofMutableByteArray# a1 = GHC.Prim.sizeofMutableByteArray# a1+{-# NOINLINE getSizeofMutableByteArray# #-}+getSizeofMutableByteArray# :: MutableByteArray# s -> State# s -> (# State# s,Int# #)+getSizeofMutableByteArray# a1 a2 = GHC.Prim.getSizeofMutableByteArray# a1 a2+{-# NOINLINE indexCharArray# #-}+indexCharArray# :: ByteArray# -> Int# -> Char#+indexCharArray# a1 a2 = GHC.Prim.indexCharArray# a1 a2+{-# NOINLINE indexWideCharArray# #-}+indexWideCharArray# :: ByteArray# -> Int# -> Char#+indexWideCharArray# a1 a2 = GHC.Prim.indexWideCharArray# a1 a2+{-# NOINLINE indexIntArray# #-}+indexIntArray# :: ByteArray# -> Int# -> Int#+indexIntArray# a1 a2 = GHC.Prim.indexIntArray# a1 a2+{-# NOINLINE indexWordArray# #-}+indexWordArray# :: ByteArray# -> Int# -> Word#+indexWordArray# a1 a2 = GHC.Prim.indexWordArray# a1 a2+{-# NOINLINE indexAddrArray# #-}+indexAddrArray# :: ByteArray# -> Int# -> Addr#+indexAddrArray# a1 a2 = GHC.Prim.indexAddrArray# a1 a2+{-# NOINLINE indexFloatArray# #-}+indexFloatArray# :: ByteArray# -> Int# -> Float#+indexFloatArray# a1 a2 = GHC.Prim.indexFloatArray# a1 a2+{-# NOINLINE indexDoubleArray# #-}+indexDoubleArray# :: ByteArray# -> Int# -> Double#+indexDoubleArray# a1 a2 = GHC.Prim.indexDoubleArray# a1 a2+{-# NOINLINE indexStablePtrArray# #-}+indexStablePtrArray# :: ByteArray# -> Int# -> StablePtr# a+indexStablePtrArray# a1 a2 = GHC.Prim.indexStablePtrArray# a1 a2+{-# NOINLINE indexInt8Array# #-}+indexInt8Array# :: ByteArray# -> Int# -> Int8#+indexInt8Array# a1 a2 = GHC.Prim.indexInt8Array# a1 a2+{-# NOINLINE indexWord8Array# #-}+indexWord8Array# :: ByteArray# -> Int# -> Word8#+indexWord8Array# a1 a2 = GHC.Prim.indexWord8Array# a1 a2+{-# NOINLINE indexInt16Array# #-}+indexInt16Array# :: ByteArray# -> Int# -> Int16#+indexInt16Array# a1 a2 = GHC.Prim.indexInt16Array# a1 a2+{-# NOINLINE indexWord16Array# #-}+indexWord16Array# :: ByteArray# -> Int# -> Word16#+indexWord16Array# a1 a2 = GHC.Prim.indexWord16Array# a1 a2+{-# NOINLINE indexInt32Array# #-}+indexInt32Array# :: ByteArray# -> Int# -> Int32#+indexInt32Array# a1 a2 = GHC.Prim.indexInt32Array# a1 a2+{-# NOINLINE indexWord32Array# #-}+indexWord32Array# :: ByteArray# -> Int# -> Word32#+indexWord32Array# a1 a2 = GHC.Prim.indexWord32Array# a1 a2+{-# NOINLINE indexInt64Array# #-}+indexInt64Array# :: ByteArray# -> Int# -> Int64#+indexInt64Array# a1 a2 = GHC.Prim.indexInt64Array# a1 a2+{-# NOINLINE indexWord64Array# #-}+indexWord64Array# :: ByteArray# -> Int# -> Word64#+indexWord64Array# a1 a2 = GHC.Prim.indexWord64Array# a1 a2+{-# NOINLINE indexWord8ArrayAsChar# #-}+indexWord8ArrayAsChar# :: ByteArray# -> Int# -> Char#+indexWord8ArrayAsChar# a1 a2 = GHC.Prim.indexWord8ArrayAsChar# a1 a2+{-# NOINLINE indexWord8ArrayAsWideChar# #-}+indexWord8ArrayAsWideChar# :: ByteArray# -> Int# -> Char#+indexWord8ArrayAsWideChar# a1 a2 = GHC.Prim.indexWord8ArrayAsWideChar# a1 a2+{-# NOINLINE indexWord8ArrayAsInt# #-}+indexWord8ArrayAsInt# :: ByteArray# -> Int# -> Int#+indexWord8ArrayAsInt# a1 a2 = GHC.Prim.indexWord8ArrayAsInt# a1 a2+{-# NOINLINE indexWord8ArrayAsWord# #-}+indexWord8ArrayAsWord# :: ByteArray# -> Int# -> Word#+indexWord8ArrayAsWord# a1 a2 = GHC.Prim.indexWord8ArrayAsWord# a1 a2+{-# NOINLINE indexWord8ArrayAsAddr# #-}+indexWord8ArrayAsAddr# :: ByteArray# -> Int# -> Addr#+indexWord8ArrayAsAddr# a1 a2 = GHC.Prim.indexWord8ArrayAsAddr# a1 a2+{-# NOINLINE indexWord8ArrayAsFloat# #-}+indexWord8ArrayAsFloat# :: ByteArray# -> Int# -> Float#+indexWord8ArrayAsFloat# a1 a2 = GHC.Prim.indexWord8ArrayAsFloat# a1 a2+{-# NOINLINE indexWord8ArrayAsDouble# #-}+indexWord8ArrayAsDouble# :: ByteArray# -> Int# -> Double#+indexWord8ArrayAsDouble# a1 a2 = GHC.Prim.indexWord8ArrayAsDouble# a1 a2+{-# NOINLINE indexWord8ArrayAsStablePtr# #-}+indexWord8ArrayAsStablePtr# :: ByteArray# -> Int# -> StablePtr# a+indexWord8ArrayAsStablePtr# a1 a2 = GHC.Prim.indexWord8ArrayAsStablePtr# a1 a2+{-# NOINLINE indexWord8ArrayAsInt16# #-}+indexWord8ArrayAsInt16# :: ByteArray# -> Int# -> Int16#+indexWord8ArrayAsInt16# a1 a2 = GHC.Prim.indexWord8ArrayAsInt16# a1 a2+{-# NOINLINE indexWord8ArrayAsWord16# #-}+indexWord8ArrayAsWord16# :: ByteArray# -> Int# -> Word16#+indexWord8ArrayAsWord16# a1 a2 = GHC.Prim.indexWord8ArrayAsWord16# a1 a2+{-# NOINLINE indexWord8ArrayAsInt32# #-}+indexWord8ArrayAsInt32# :: ByteArray# -> Int# -> Int32#+indexWord8ArrayAsInt32# a1 a2 = GHC.Prim.indexWord8ArrayAsInt32# a1 a2+{-# NOINLINE indexWord8ArrayAsWord32# #-}+indexWord8ArrayAsWord32# :: ByteArray# -> Int# -> Word32#+indexWord8ArrayAsWord32# a1 a2 = GHC.Prim.indexWord8ArrayAsWord32# a1 a2+{-# NOINLINE indexWord8ArrayAsInt64# #-}+indexWord8ArrayAsInt64# :: ByteArray# -> Int# -> Int64#+indexWord8ArrayAsInt64# a1 a2 = GHC.Prim.indexWord8ArrayAsInt64# a1 a2+{-# NOINLINE indexWord8ArrayAsWord64# #-}+indexWord8ArrayAsWord64# :: ByteArray# -> Int# -> Word64#+indexWord8ArrayAsWord64# a1 a2 = GHC.Prim.indexWord8ArrayAsWord64# a1 a2+{-# NOINLINE readCharArray# #-}+readCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)+readCharArray# a1 a2 a3 = GHC.Prim.readCharArray# a1 a2 a3+{-# NOINLINE readWideCharArray# #-}+readWideCharArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)+readWideCharArray# a1 a2 a3 = GHC.Prim.readWideCharArray# a1 a2 a3+{-# NOINLINE readIntArray# #-}+readIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)+readIntArray# a1 a2 a3 = GHC.Prim.readIntArray# a1 a2 a3+{-# NOINLINE readWordArray# #-}+readWordArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #)+readWordArray# a1 a2 a3 = GHC.Prim.readWordArray# a1 a2 a3+{-# NOINLINE readAddrArray# #-}+readAddrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Addr# #)+readAddrArray# a1 a2 a3 = GHC.Prim.readAddrArray# a1 a2 a3+{-# NOINLINE readFloatArray# #-}+readFloatArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Float# #)+readFloatArray# a1 a2 a3 = GHC.Prim.readFloatArray# a1 a2 a3+{-# NOINLINE readDoubleArray# #-}+readDoubleArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Double# #)+readDoubleArray# a1 a2 a3 = GHC.Prim.readDoubleArray# a1 a2 a3+{-# NOINLINE readStablePtrArray# #-}+readStablePtrArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,StablePtr# a #)+readStablePtrArray# a1 a2 a3 = GHC.Prim.readStablePtrArray# a1 a2 a3+{-# NOINLINE readInt8Array# #-}+readInt8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int8# #)+readInt8Array# a1 a2 a3 = GHC.Prim.readInt8Array# a1 a2 a3+{-# NOINLINE readWord8Array# #-}+readWord8Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word8# #)+readWord8Array# a1 a2 a3 = GHC.Prim.readWord8Array# a1 a2 a3+{-# NOINLINE readInt16Array# #-}+readInt16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16# #)+readInt16Array# a1 a2 a3 = GHC.Prim.readInt16Array# a1 a2 a3+{-# NOINLINE readWord16Array# #-}+readWord16Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16# #)+readWord16Array# a1 a2 a3 = GHC.Prim.readWord16Array# a1 a2 a3+{-# NOINLINE readInt32Array# #-}+readInt32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32# #)+readInt32Array# a1 a2 a3 = GHC.Prim.readInt32Array# a1 a2 a3+{-# NOINLINE readWord32Array# #-}+readWord32Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32# #)+readWord32Array# a1 a2 a3 = GHC.Prim.readWord32Array# a1 a2 a3+{-# NOINLINE readInt64Array# #-}+readInt64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64# #)+readInt64Array# a1 a2 a3 = GHC.Prim.readInt64Array# a1 a2 a3+{-# NOINLINE readWord64Array# #-}+readWord64Array# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64# #)+readWord64Array# a1 a2 a3 = GHC.Prim.readWord64Array# a1 a2 a3+{-# NOINLINE readWord8ArrayAsChar# #-}+readWord8ArrayAsChar# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)+readWord8ArrayAsChar# a1 a2 a3 = GHC.Prim.readWord8ArrayAsChar# a1 a2 a3+{-# NOINLINE readWord8ArrayAsWideChar# #-}+readWord8ArrayAsWideChar# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Char# #)+readWord8ArrayAsWideChar# a1 a2 a3 = GHC.Prim.readWord8ArrayAsWideChar# a1 a2 a3+{-# NOINLINE readWord8ArrayAsInt# #-}+readWord8ArrayAsInt# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)+readWord8ArrayAsInt# a1 a2 a3 = GHC.Prim.readWord8ArrayAsInt# a1 a2 a3+{-# NOINLINE readWord8ArrayAsWord# #-}+readWord8ArrayAsWord# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word# #)+readWord8ArrayAsWord# a1 a2 a3 = GHC.Prim.readWord8ArrayAsWord# a1 a2 a3+{-# NOINLINE readWord8ArrayAsAddr# #-}+readWord8ArrayAsAddr# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Addr# #)+readWord8ArrayAsAddr# a1 a2 a3 = GHC.Prim.readWord8ArrayAsAddr# a1 a2 a3+{-# NOINLINE readWord8ArrayAsFloat# #-}+readWord8ArrayAsFloat# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Float# #)+readWord8ArrayAsFloat# a1 a2 a3 = GHC.Prim.readWord8ArrayAsFloat# a1 a2 a3+{-# NOINLINE readWord8ArrayAsDouble# #-}+readWord8ArrayAsDouble# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Double# #)+readWord8ArrayAsDouble# a1 a2 a3 = GHC.Prim.readWord8ArrayAsDouble# a1 a2 a3+{-# NOINLINE readWord8ArrayAsStablePtr# #-}+readWord8ArrayAsStablePtr# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,StablePtr# a #)+readWord8ArrayAsStablePtr# a1 a2 a3 = GHC.Prim.readWord8ArrayAsStablePtr# a1 a2 a3+{-# NOINLINE readWord8ArrayAsInt16# #-}+readWord8ArrayAsInt16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int16# #)+readWord8ArrayAsInt16# a1 a2 a3 = GHC.Prim.readWord8ArrayAsInt16# a1 a2 a3+{-# NOINLINE readWord8ArrayAsWord16# #-}+readWord8ArrayAsWord16# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word16# #)+readWord8ArrayAsWord16# a1 a2 a3 = GHC.Prim.readWord8ArrayAsWord16# a1 a2 a3+{-# NOINLINE readWord8ArrayAsInt32# #-}+readWord8ArrayAsInt32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int32# #)+readWord8ArrayAsInt32# a1 a2 a3 = GHC.Prim.readWord8ArrayAsInt32# a1 a2 a3+{-# NOINLINE readWord8ArrayAsWord32# #-}+readWord8ArrayAsWord32# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word32# #)+readWord8ArrayAsWord32# a1 a2 a3 = GHC.Prim.readWord8ArrayAsWord32# a1 a2 a3+{-# NOINLINE readWord8ArrayAsInt64# #-}+readWord8ArrayAsInt64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int64# #)+readWord8ArrayAsInt64# a1 a2 a3 = GHC.Prim.readWord8ArrayAsInt64# a1 a2 a3+{-# NOINLINE readWord8ArrayAsWord64# #-}+readWord8ArrayAsWord64# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Word64# #)+readWord8ArrayAsWord64# a1 a2 a3 = GHC.Prim.readWord8ArrayAsWord64# a1 a2 a3+{-# NOINLINE writeCharArray# #-}+writeCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s+writeCharArray# a1 a2 a3 a4 = GHC.Prim.writeCharArray# a1 a2 a3 a4+{-# NOINLINE writeWideCharArray# #-}+writeWideCharArray# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s+writeWideCharArray# a1 a2 a3 a4 = GHC.Prim.writeWideCharArray# a1 a2 a3 a4+{-# NOINLINE writeIntArray# #-}+writeIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+writeIntArray# a1 a2 a3 a4 = GHC.Prim.writeIntArray# a1 a2 a3 a4+{-# NOINLINE writeWordArray# #-}+writeWordArray# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s+writeWordArray# a1 a2 a3 a4 = GHC.Prim.writeWordArray# a1 a2 a3 a4+{-# NOINLINE writeAddrArray# #-}+writeAddrArray# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s+writeAddrArray# a1 a2 a3 a4 = GHC.Prim.writeAddrArray# a1 a2 a3 a4+{-# NOINLINE writeFloatArray# #-}+writeFloatArray# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s+writeFloatArray# a1 a2 a3 a4 = GHC.Prim.writeFloatArray# a1 a2 a3 a4+{-# NOINLINE writeDoubleArray# #-}+writeDoubleArray# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s+writeDoubleArray# a1 a2 a3 a4 = GHC.Prim.writeDoubleArray# a1 a2 a3 a4+{-# NOINLINE writeStablePtrArray# #-}+writeStablePtrArray# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s+writeStablePtrArray# a1 a2 a3 a4 = GHC.Prim.writeStablePtrArray# a1 a2 a3 a4+{-# NOINLINE writeInt8Array# #-}+writeInt8Array# :: MutableByteArray# s -> Int# -> Int8# -> State# s -> State# s+writeInt8Array# a1 a2 a3 a4 = GHC.Prim.writeInt8Array# a1 a2 a3 a4+{-# NOINLINE writeWord8Array# #-}+writeWord8Array# :: MutableByteArray# s -> Int# -> Word8# -> State# s -> State# s+writeWord8Array# a1 a2 a3 a4 = GHC.Prim.writeWord8Array# a1 a2 a3 a4+{-# NOINLINE writeInt16Array# #-}+writeInt16Array# :: MutableByteArray# s -> Int# -> Int16# -> State# s -> State# s+writeInt16Array# a1 a2 a3 a4 = GHC.Prim.writeInt16Array# a1 a2 a3 a4+{-# NOINLINE writeWord16Array# #-}+writeWord16Array# :: MutableByteArray# s -> Int# -> Word16# -> State# s -> State# s+writeWord16Array# a1 a2 a3 a4 = GHC.Prim.writeWord16Array# a1 a2 a3 a4+{-# NOINLINE writeInt32Array# #-}+writeInt32Array# :: MutableByteArray# s -> Int# -> Int32# -> State# s -> State# s+writeInt32Array# a1 a2 a3 a4 = GHC.Prim.writeInt32Array# a1 a2 a3 a4+{-# NOINLINE writeWord32Array# #-}+writeWord32Array# :: MutableByteArray# s -> Int# -> Word32# -> State# s -> State# s+writeWord32Array# a1 a2 a3 a4 = GHC.Prim.writeWord32Array# a1 a2 a3 a4+{-# NOINLINE writeInt64Array# #-}+writeInt64Array# :: MutableByteArray# s -> Int# -> Int64# -> State# s -> State# s+writeInt64Array# a1 a2 a3 a4 = GHC.Prim.writeInt64Array# a1 a2 a3 a4+{-# NOINLINE writeWord64Array# #-}+writeWord64Array# :: MutableByteArray# s -> Int# -> Word64# -> State# s -> State# s+writeWord64Array# a1 a2 a3 a4 = GHC.Prim.writeWord64Array# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsChar# #-}+writeWord8ArrayAsChar# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s+writeWord8ArrayAsChar# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsChar# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsWideChar# #-}+writeWord8ArrayAsWideChar# :: MutableByteArray# s -> Int# -> Char# -> State# s -> State# s+writeWord8ArrayAsWideChar# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsWideChar# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsInt# #-}+writeWord8ArrayAsInt# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+writeWord8ArrayAsInt# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsInt# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsWord# #-}+writeWord8ArrayAsWord# :: MutableByteArray# s -> Int# -> Word# -> State# s -> State# s+writeWord8ArrayAsWord# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsWord# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsAddr# #-}+writeWord8ArrayAsAddr# :: MutableByteArray# s -> Int# -> Addr# -> State# s -> State# s+writeWord8ArrayAsAddr# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsAddr# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsFloat# #-}+writeWord8ArrayAsFloat# :: MutableByteArray# s -> Int# -> Float# -> State# s -> State# s+writeWord8ArrayAsFloat# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsFloat# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsDouble# #-}+writeWord8ArrayAsDouble# :: MutableByteArray# s -> Int# -> Double# -> State# s -> State# s+writeWord8ArrayAsDouble# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsDouble# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsStablePtr# #-}+writeWord8ArrayAsStablePtr# :: MutableByteArray# s -> Int# -> StablePtr# a -> State# s -> State# s+writeWord8ArrayAsStablePtr# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsStablePtr# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsInt16# #-}+writeWord8ArrayAsInt16# :: MutableByteArray# s -> Int# -> Int16# -> State# s -> State# s+writeWord8ArrayAsInt16# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsInt16# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsWord16# #-}+writeWord8ArrayAsWord16# :: MutableByteArray# s -> Int# -> Word16# -> State# s -> State# s+writeWord8ArrayAsWord16# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsWord16# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsInt32# #-}+writeWord8ArrayAsInt32# :: MutableByteArray# s -> Int# -> Int32# -> State# s -> State# s+writeWord8ArrayAsInt32# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsInt32# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsWord32# #-}+writeWord8ArrayAsWord32# :: MutableByteArray# s -> Int# -> Word32# -> State# s -> State# s+writeWord8ArrayAsWord32# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsWord32# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsInt64# #-}+writeWord8ArrayAsInt64# :: MutableByteArray# s -> Int# -> Int64# -> State# s -> State# s+writeWord8ArrayAsInt64# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsInt64# a1 a2 a3 a4+{-# NOINLINE writeWord8ArrayAsWord64# #-}+writeWord8ArrayAsWord64# :: MutableByteArray# s -> Int# -> Word64# -> State# s -> State# s+writeWord8ArrayAsWord64# a1 a2 a3 a4 = GHC.Prim.writeWord8ArrayAsWord64# a1 a2 a3 a4+{-# NOINLINE compareByteArrays# #-}+compareByteArrays# :: ByteArray# -> Int# -> ByteArray# -> Int# -> Int# -> Int#+compareByteArrays# a1 a2 a3 a4 a5 = GHC.Prim.compareByteArrays# a1 a2 a3 a4 a5+{-# NOINLINE copyByteArray# #-}+copyByteArray# :: ByteArray# -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+copyByteArray# a1 a2 a3 a4 a5 a6 = GHC.Prim.copyByteArray# a1 a2 a3 a4 a5 a6+{-# NOINLINE copyMutableByteArray# #-}+copyMutableByteArray# :: MutableByteArray# s -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+copyMutableByteArray# a1 a2 a3 a4 a5 a6 = GHC.Prim.copyMutableByteArray# a1 a2 a3 a4 a5 a6+{-# NOINLINE copyMutableByteArrayNonOverlapping# #-}+copyMutableByteArrayNonOverlapping# :: MutableByteArray# s -> Int# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+copyMutableByteArrayNonOverlapping# a1 a2 a3 a4 a5 a6 = GHC.Prim.copyMutableByteArrayNonOverlapping# a1 a2 a3 a4 a5 a6+{-# NOINLINE copyByteArrayToAddr# #-}+copyByteArrayToAddr# :: ByteArray# -> Int# -> Addr# -> Int# -> State# s -> State# s+copyByteArrayToAddr# a1 a2 a3 a4 a5 = GHC.Prim.copyByteArrayToAddr# a1 a2 a3 a4 a5+{-# NOINLINE copyMutableByteArrayToAddr# #-}+copyMutableByteArrayToAddr# :: MutableByteArray# s -> Int# -> Addr# -> Int# -> State# s -> State# s+copyMutableByteArrayToAddr# a1 a2 a3 a4 a5 = GHC.Prim.copyMutableByteArrayToAddr# a1 a2 a3 a4 a5+{-# NOINLINE copyAddrToByteArray# #-}+copyAddrToByteArray# :: Addr# -> MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+copyAddrToByteArray# a1 a2 a3 a4 a5 = GHC.Prim.copyAddrToByteArray# a1 a2 a3 a4 a5+{-# NOINLINE copyAddrToAddr# #-}+copyAddrToAddr# :: Addr# -> Addr# -> Int# -> State# (RealWorld) -> State# (RealWorld)+copyAddrToAddr# a1 a2 a3 a4 = GHC.Prim.copyAddrToAddr# a1 a2 a3 a4+{-# NOINLINE copyAddrToAddrNonOverlapping# #-}+copyAddrToAddrNonOverlapping# :: Addr# -> Addr# -> Int# -> State# (RealWorld) -> State# (RealWorld)+copyAddrToAddrNonOverlapping# a1 a2 a3 a4 = GHC.Prim.copyAddrToAddrNonOverlapping# a1 a2 a3 a4+{-# NOINLINE setByteArray# #-}+setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> State# s+setByteArray# a1 a2 a3 a4 a5 = GHC.Prim.setByteArray# a1 a2 a3 a4 a5+{-# NOINLINE setAddrRange# #-}+setAddrRange# :: Addr# -> Int# -> Int# -> State# (RealWorld) -> State# (RealWorld)+setAddrRange# a1 a2 a3 a4 = GHC.Prim.setAddrRange# a1 a2 a3 a4+{-# NOINLINE atomicReadIntArray# #-}+atomicReadIntArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s,Int# #)+atomicReadIntArray# a1 a2 a3 = GHC.Prim.atomicReadIntArray# a1 a2 a3+{-# NOINLINE atomicWriteIntArray# #-}+atomicWriteIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> State# s+atomicWriteIntArray# a1 a2 a3 a4 = GHC.Prim.atomicWriteIntArray# a1 a2 a3 a4+{-# NOINLINE casIntArray# #-}+casIntArray# :: MutableByteArray# s -> Int# -> Int# -> Int# -> State# s -> (# State# s,Int# #)+casIntArray# a1 a2 a3 a4 a5 = GHC.Prim.casIntArray# a1 a2 a3 a4 a5+{-# NOINLINE casInt8Array# #-}+casInt8Array# :: MutableByteArray# s -> Int# -> Int8# -> Int8# -> State# s -> (# State# s,Int8# #)+casInt8Array# a1 a2 a3 a4 a5 = GHC.Prim.casInt8Array# a1 a2 a3 a4 a5+{-# NOINLINE casInt16Array# #-}+casInt16Array# :: MutableByteArray# s -> Int# -> Int16# -> Int16# -> State# s -> (# State# s,Int16# #)+casInt16Array# a1 a2 a3 a4 a5 = GHC.Prim.casInt16Array# a1 a2 a3 a4 a5+{-# NOINLINE casInt32Array# #-}+casInt32Array# :: MutableByteArray# s -> Int# -> Int32# -> Int32# -> State# s -> (# State# s,Int32# #)+casInt32Array# a1 a2 a3 a4 a5 = GHC.Prim.casInt32Array# a1 a2 a3 a4 a5+{-# NOINLINE casInt64Array# #-}+casInt64Array# :: MutableByteArray# s -> Int# -> Int64# -> Int64# -> State# s -> (# State# s,Int64# #)+casInt64Array# a1 a2 a3 a4 a5 = GHC.Prim.casInt64Array# a1 a2 a3 a4 a5+{-# NOINLINE fetchAddIntArray# #-}+fetchAddIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)+fetchAddIntArray# a1 a2 a3 a4 = GHC.Prim.fetchAddIntArray# a1 a2 a3 a4+{-# NOINLINE fetchSubIntArray# #-}+fetchSubIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)+fetchSubIntArray# a1 a2 a3 a4 = GHC.Prim.fetchSubIntArray# a1 a2 a3 a4+{-# NOINLINE fetchAndIntArray# #-}+fetchAndIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)+fetchAndIntArray# a1 a2 a3 a4 = GHC.Prim.fetchAndIntArray# a1 a2 a3 a4+{-# NOINLINE fetchNandIntArray# #-}+fetchNandIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)+fetchNandIntArray# a1 a2 a3 a4 = GHC.Prim.fetchNandIntArray# a1 a2 a3 a4+{-# NOINLINE fetchOrIntArray# #-}+fetchOrIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)+fetchOrIntArray# a1 a2 a3 a4 = GHC.Prim.fetchOrIntArray# a1 a2 a3 a4+{-# NOINLINE fetchXorIntArray# #-}+fetchXorIntArray# :: MutableByteArray# s -> Int# -> Int# -> State# s -> (# State# s,Int# #)+fetchXorIntArray# a1 a2 a3 a4 = GHC.Prim.fetchXorIntArray# a1 a2 a3 a4+{-# NOINLINE plusAddr# #-}+plusAddr# :: Addr# -> Int# -> Addr#+plusAddr# a1 a2 = GHC.Prim.plusAddr# a1 a2+{-# NOINLINE minusAddr# #-}+minusAddr# :: Addr# -> Addr# -> Int#+minusAddr# a1 a2 = GHC.Prim.minusAddr# a1 a2+{-# NOINLINE remAddr# #-}+remAddr# :: Addr# -> Int# -> Int#+remAddr# a1 a2 = GHC.Prim.remAddr# a1 a2+{-# NOINLINE addr2Int# #-}+addr2Int# :: Addr# -> Int#+addr2Int# a1 = GHC.Prim.addr2Int# a1+{-# NOINLINE int2Addr# #-}+int2Addr# :: Int# -> Addr#+int2Addr# a1 = GHC.Prim.int2Addr# a1+{-# NOINLINE gtAddr# #-}+gtAddr# :: Addr# -> Addr# -> Int#+gtAddr# a1 a2 = GHC.Prim.gtAddr# a1 a2+{-# NOINLINE geAddr# #-}+geAddr# :: Addr# -> Addr# -> Int#+geAddr# a1 a2 = GHC.Prim.geAddr# a1 a2+{-# NOINLINE eqAddr# #-}+eqAddr# :: Addr# -> Addr# -> Int#+eqAddr# a1 a2 = GHC.Prim.eqAddr# a1 a2+{-# NOINLINE neAddr# #-}+neAddr# :: Addr# -> Addr# -> Int#+neAddr# a1 a2 = GHC.Prim.neAddr# a1 a2+{-# NOINLINE ltAddr# #-}+ltAddr# :: Addr# -> Addr# -> Int#+ltAddr# a1 a2 = GHC.Prim.ltAddr# a1 a2+{-# NOINLINE leAddr# #-}+leAddr# :: Addr# -> Addr# -> Int#+leAddr# a1 a2 = GHC.Prim.leAddr# a1 a2+{-# NOINLINE indexCharOffAddr# #-}+indexCharOffAddr# :: Addr# -> Int# -> Char#+indexCharOffAddr# a1 a2 = GHC.Prim.indexCharOffAddr# a1 a2+{-# NOINLINE indexWideCharOffAddr# #-}+indexWideCharOffAddr# :: Addr# -> Int# -> Char#+indexWideCharOffAddr# a1 a2 = GHC.Prim.indexWideCharOffAddr# a1 a2+{-# NOINLINE indexIntOffAddr# #-}+indexIntOffAddr# :: Addr# -> Int# -> Int#+indexIntOffAddr# a1 a2 = GHC.Prim.indexIntOffAddr# a1 a2+{-# NOINLINE indexWordOffAddr# #-}+indexWordOffAddr# :: Addr# -> Int# -> Word#+indexWordOffAddr# a1 a2 = GHC.Prim.indexWordOffAddr# a1 a2+{-# NOINLINE indexAddrOffAddr# #-}+indexAddrOffAddr# :: Addr# -> Int# -> Addr#+indexAddrOffAddr# a1 a2 = GHC.Prim.indexAddrOffAddr# a1 a2+{-# NOINLINE indexFloatOffAddr# #-}+indexFloatOffAddr# :: Addr# -> Int# -> Float#+indexFloatOffAddr# a1 a2 = GHC.Prim.indexFloatOffAddr# a1 a2+{-# NOINLINE indexDoubleOffAddr# #-}+indexDoubleOffAddr# :: Addr# -> Int# -> Double#+indexDoubleOffAddr# a1 a2 = GHC.Prim.indexDoubleOffAddr# a1 a2+{-# NOINLINE indexStablePtrOffAddr# #-}+indexStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a+indexStablePtrOffAddr# a1 a2 = GHC.Prim.indexStablePtrOffAddr# a1 a2+{-# NOINLINE indexInt8OffAddr# #-}+indexInt8OffAddr# :: Addr# -> Int# -> Int8#+indexInt8OffAddr# a1 a2 = GHC.Prim.indexInt8OffAddr# a1 a2+{-# NOINLINE indexWord8OffAddr# #-}+indexWord8OffAddr# :: Addr# -> Int# -> Word8#+indexWord8OffAddr# a1 a2 = GHC.Prim.indexWord8OffAddr# a1 a2+{-# NOINLINE indexInt16OffAddr# #-}+indexInt16OffAddr# :: Addr# -> Int# -> Int16#+indexInt16OffAddr# a1 a2 = GHC.Prim.indexInt16OffAddr# a1 a2+{-# NOINLINE indexWord16OffAddr# #-}+indexWord16OffAddr# :: Addr# -> Int# -> Word16#+indexWord16OffAddr# a1 a2 = GHC.Prim.indexWord16OffAddr# a1 a2+{-# NOINLINE indexInt32OffAddr# #-}+indexInt32OffAddr# :: Addr# -> Int# -> Int32#+indexInt32OffAddr# a1 a2 = GHC.Prim.indexInt32OffAddr# a1 a2+{-# NOINLINE indexWord32OffAddr# #-}+indexWord32OffAddr# :: Addr# -> Int# -> Word32#+indexWord32OffAddr# a1 a2 = GHC.Prim.indexWord32OffAddr# a1 a2+{-# NOINLINE indexInt64OffAddr# #-}+indexInt64OffAddr# :: Addr# -> Int# -> Int64#+indexInt64OffAddr# a1 a2 = GHC.Prim.indexInt64OffAddr# a1 a2+{-# NOINLINE indexWord64OffAddr# #-}+indexWord64OffAddr# :: Addr# -> Int# -> Word64#+indexWord64OffAddr# a1 a2 = GHC.Prim.indexWord64OffAddr# a1 a2+{-# NOINLINE indexWord8OffAddrAsChar# #-}+indexWord8OffAddrAsChar# :: Addr# -> Int# -> Char#+indexWord8OffAddrAsChar# a1 a2 = GHC.Prim.indexWord8OffAddrAsChar# a1 a2+{-# NOINLINE indexWord8OffAddrAsWideChar# #-}+indexWord8OffAddrAsWideChar# :: Addr# -> Int# -> Char#+indexWord8OffAddrAsWideChar# a1 a2 = GHC.Prim.indexWord8OffAddrAsWideChar# a1 a2+{-# NOINLINE indexWord8OffAddrAsInt# #-}+indexWord8OffAddrAsInt# :: Addr# -> Int# -> Int#+indexWord8OffAddrAsInt# a1 a2 = GHC.Prim.indexWord8OffAddrAsInt# a1 a2+{-# NOINLINE indexWord8OffAddrAsWord# #-}+indexWord8OffAddrAsWord# :: Addr# -> Int# -> Word#+indexWord8OffAddrAsWord# a1 a2 = GHC.Prim.indexWord8OffAddrAsWord# a1 a2+{-# NOINLINE indexWord8OffAddrAsAddr# #-}+indexWord8OffAddrAsAddr# :: Addr# -> Int# -> Addr#+indexWord8OffAddrAsAddr# a1 a2 = GHC.Prim.indexWord8OffAddrAsAddr# a1 a2+{-# NOINLINE indexWord8OffAddrAsFloat# #-}+indexWord8OffAddrAsFloat# :: Addr# -> Int# -> Float#+indexWord8OffAddrAsFloat# a1 a2 = GHC.Prim.indexWord8OffAddrAsFloat# a1 a2+{-# NOINLINE indexWord8OffAddrAsDouble# #-}+indexWord8OffAddrAsDouble# :: Addr# -> Int# -> Double#+indexWord8OffAddrAsDouble# a1 a2 = GHC.Prim.indexWord8OffAddrAsDouble# a1 a2+{-# NOINLINE indexWord8OffAddrAsStablePtr# #-}+indexWord8OffAddrAsStablePtr# :: Addr# -> Int# -> StablePtr# a+indexWord8OffAddrAsStablePtr# a1 a2 = GHC.Prim.indexWord8OffAddrAsStablePtr# a1 a2+{-# NOINLINE indexWord8OffAddrAsInt16# #-}+indexWord8OffAddrAsInt16# :: Addr# -> Int# -> Int16#+indexWord8OffAddrAsInt16# a1 a2 = GHC.Prim.indexWord8OffAddrAsInt16# a1 a2+{-# NOINLINE indexWord8OffAddrAsWord16# #-}+indexWord8OffAddrAsWord16# :: Addr# -> Int# -> Word16#+indexWord8OffAddrAsWord16# a1 a2 = GHC.Prim.indexWord8OffAddrAsWord16# a1 a2+{-# NOINLINE indexWord8OffAddrAsInt32# #-}+indexWord8OffAddrAsInt32# :: Addr# -> Int# -> Int32#+indexWord8OffAddrAsInt32# a1 a2 = GHC.Prim.indexWord8OffAddrAsInt32# a1 a2+{-# NOINLINE indexWord8OffAddrAsWord32# #-}+indexWord8OffAddrAsWord32# :: Addr# -> Int# -> Word32#+indexWord8OffAddrAsWord32# a1 a2 = GHC.Prim.indexWord8OffAddrAsWord32# a1 a2+{-# NOINLINE indexWord8OffAddrAsInt64# #-}+indexWord8OffAddrAsInt64# :: Addr# -> Int# -> Int64#+indexWord8OffAddrAsInt64# a1 a2 = GHC.Prim.indexWord8OffAddrAsInt64# a1 a2+{-# NOINLINE indexWord8OffAddrAsWord64# #-}+indexWord8OffAddrAsWord64# :: Addr# -> Int# -> Word64#+indexWord8OffAddrAsWord64# a1 a2 = GHC.Prim.indexWord8OffAddrAsWord64# a1 a2+{-# NOINLINE readCharOffAddr# #-}+readCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Char# #)+readCharOffAddr# a1 a2 a3 = GHC.Prim.readCharOffAddr# a1 a2 a3+{-# NOINLINE readWideCharOffAddr# #-}+readWideCharOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Char# #)+readWideCharOffAddr# a1 a2 a3 = GHC.Prim.readWideCharOffAddr# a1 a2 a3+{-# NOINLINE readIntOffAddr# #-}+readIntOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int# #)+readIntOffAddr# a1 a2 a3 = GHC.Prim.readIntOffAddr# a1 a2 a3+{-# NOINLINE readWordOffAddr# #-}+readWordOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word# #)+readWordOffAddr# a1 a2 a3 = GHC.Prim.readWordOffAddr# a1 a2 a3+{-# NOINLINE readAddrOffAddr# #-}+readAddrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Addr# #)+readAddrOffAddr# a1 a2 a3 = GHC.Prim.readAddrOffAddr# a1 a2 a3+{-# NOINLINE readFloatOffAddr# #-}+readFloatOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Float# #)+readFloatOffAddr# a1 a2 a3 = GHC.Prim.readFloatOffAddr# a1 a2 a3+{-# NOINLINE readDoubleOffAddr# #-}+readDoubleOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Double# #)+readDoubleOffAddr# a1 a2 a3 = GHC.Prim.readDoubleOffAddr# a1 a2 a3+{-# NOINLINE readStablePtrOffAddr# #-}+readStablePtrOffAddr# :: Addr# -> Int# -> State# s -> (# State# s,StablePtr# a #)+readStablePtrOffAddr# a1 a2 a3 = GHC.Prim.readStablePtrOffAddr# a1 a2 a3+{-# NOINLINE readInt8OffAddr# #-}+readInt8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int8# #)+readInt8OffAddr# a1 a2 a3 = GHC.Prim.readInt8OffAddr# a1 a2 a3+{-# NOINLINE readWord8OffAddr# #-}+readWord8OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word8# #)+readWord8OffAddr# a1 a2 a3 = GHC.Prim.readWord8OffAddr# a1 a2 a3+{-# NOINLINE readInt16OffAddr# #-}+readInt16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int16# #)+readInt16OffAddr# a1 a2 a3 = GHC.Prim.readInt16OffAddr# a1 a2 a3+{-# NOINLINE readWord16OffAddr# #-}+readWord16OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word16# #)+readWord16OffAddr# a1 a2 a3 = GHC.Prim.readWord16OffAddr# a1 a2 a3+{-# NOINLINE readInt32OffAddr# #-}+readInt32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int32# #)+readInt32OffAddr# a1 a2 a3 = GHC.Prim.readInt32OffAddr# a1 a2 a3+{-# NOINLINE readWord32OffAddr# #-}+readWord32OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word32# #)+readWord32OffAddr# a1 a2 a3 = GHC.Prim.readWord32OffAddr# a1 a2 a3+{-# NOINLINE readInt64OffAddr# #-}+readInt64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Int64# #)+readInt64OffAddr# a1 a2 a3 = GHC.Prim.readInt64OffAddr# a1 a2 a3+{-# NOINLINE readWord64OffAddr# #-}+readWord64OffAddr# :: Addr# -> Int# -> State# s -> (# State# s,Word64# #)+readWord64OffAddr# a1 a2 a3 = GHC.Prim.readWord64OffAddr# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsChar# #-}+readWord8OffAddrAsChar# :: Addr# -> Int# -> State# s -> (# State# s,Char# #)+readWord8OffAddrAsChar# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsChar# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsWideChar# #-}+readWord8OffAddrAsWideChar# :: Addr# -> Int# -> State# s -> (# State# s,Char# #)+readWord8OffAddrAsWideChar# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsWideChar# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsInt# #-}+readWord8OffAddrAsInt# :: Addr# -> Int# -> State# s -> (# State# s,Int# #)+readWord8OffAddrAsInt# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsInt# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsWord# #-}+readWord8OffAddrAsWord# :: Addr# -> Int# -> State# s -> (# State# s,Word# #)+readWord8OffAddrAsWord# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsWord# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsAddr# #-}+readWord8OffAddrAsAddr# :: Addr# -> Int# -> State# s -> (# State# s,Addr# #)+readWord8OffAddrAsAddr# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsAddr# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsFloat# #-}+readWord8OffAddrAsFloat# :: Addr# -> Int# -> State# s -> (# State# s,Float# #)+readWord8OffAddrAsFloat# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsFloat# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsDouble# #-}+readWord8OffAddrAsDouble# :: Addr# -> Int# -> State# s -> (# State# s,Double# #)+readWord8OffAddrAsDouble# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsDouble# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsStablePtr# #-}+readWord8OffAddrAsStablePtr# :: Addr# -> Int# -> State# s -> (# State# s,StablePtr# a #)+readWord8OffAddrAsStablePtr# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsStablePtr# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsInt16# #-}+readWord8OffAddrAsInt16# :: Addr# -> Int# -> State# s -> (# State# s,Int16# #)+readWord8OffAddrAsInt16# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsInt16# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsWord16# #-}+readWord8OffAddrAsWord16# :: Addr# -> Int# -> State# s -> (# State# s,Word16# #)+readWord8OffAddrAsWord16# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsWord16# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsInt32# #-}+readWord8OffAddrAsInt32# :: Addr# -> Int# -> State# s -> (# State# s,Int32# #)+readWord8OffAddrAsInt32# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsInt32# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsWord32# #-}+readWord8OffAddrAsWord32# :: Addr# -> Int# -> State# s -> (# State# s,Word32# #)+readWord8OffAddrAsWord32# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsWord32# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsInt64# #-}+readWord8OffAddrAsInt64# :: Addr# -> Int# -> State# s -> (# State# s,Int64# #)+readWord8OffAddrAsInt64# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsInt64# a1 a2 a3+{-# NOINLINE readWord8OffAddrAsWord64# #-}+readWord8OffAddrAsWord64# :: Addr# -> Int# -> State# s -> (# State# s,Word64# #)+readWord8OffAddrAsWord64# a1 a2 a3 = GHC.Prim.readWord8OffAddrAsWord64# a1 a2 a3+{-# NOINLINE writeCharOffAddr# #-}+writeCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s+writeCharOffAddr# a1 a2 a3 a4 = GHC.Prim.writeCharOffAddr# a1 a2 a3 a4+{-# NOINLINE writeWideCharOffAddr# #-}+writeWideCharOffAddr# :: Addr# -> Int# -> Char# -> State# s -> State# s+writeWideCharOffAddr# a1 a2 a3 a4 = GHC.Prim.writeWideCharOffAddr# a1 a2 a3 a4+{-# NOINLINE writeIntOffAddr# #-}+writeIntOffAddr# :: Addr# -> Int# -> Int# -> State# s -> State# s+writeIntOffAddr# a1 a2 a3 a4 = GHC.Prim.writeIntOffAddr# a1 a2 a3 a4+{-# NOINLINE writeWordOffAddr# #-}+writeWordOffAddr# :: Addr# -> Int# -> Word# -> State# s -> State# s+writeWordOffAddr# a1 a2 a3 a4 = GHC.Prim.writeWordOffAddr# a1 a2 a3 a4+{-# NOINLINE writeAddrOffAddr# #-}+writeAddrOffAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s+writeAddrOffAddr# a1 a2 a3 a4 = GHC.Prim.writeAddrOffAddr# a1 a2 a3 a4+{-# NOINLINE writeFloatOffAddr# #-}+writeFloatOffAddr# :: Addr# -> Int# -> Float# -> State# s -> State# s+writeFloatOffAddr# a1 a2 a3 a4 = GHC.Prim.writeFloatOffAddr# a1 a2 a3 a4+{-# NOINLINE writeDoubleOffAddr# #-}+writeDoubleOffAddr# :: Addr# -> Int# -> Double# -> State# s -> State# s+writeDoubleOffAddr# a1 a2 a3 a4 = GHC.Prim.writeDoubleOffAddr# a1 a2 a3 a4+{-# NOINLINE writeStablePtrOffAddr# #-}+writeStablePtrOffAddr# :: Addr# -> Int# -> StablePtr# a -> State# s -> State# s+writeStablePtrOffAddr# a1 a2 a3 a4 = GHC.Prim.writeStablePtrOffAddr# a1 a2 a3 a4+{-# NOINLINE writeInt8OffAddr# #-}+writeInt8OffAddr# :: Addr# -> Int# -> Int8# -> State# s -> State# s+writeInt8OffAddr# a1 a2 a3 a4 = GHC.Prim.writeInt8OffAddr# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddr# #-}+writeWord8OffAddr# :: Addr# -> Int# -> Word8# -> State# s -> State# s+writeWord8OffAddr# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddr# a1 a2 a3 a4+{-# NOINLINE writeInt16OffAddr# #-}+writeInt16OffAddr# :: Addr# -> Int# -> Int16# -> State# s -> State# s+writeInt16OffAddr# a1 a2 a3 a4 = GHC.Prim.writeInt16OffAddr# a1 a2 a3 a4+{-# NOINLINE writeWord16OffAddr# #-}+writeWord16OffAddr# :: Addr# -> Int# -> Word16# -> State# s -> State# s+writeWord16OffAddr# a1 a2 a3 a4 = GHC.Prim.writeWord16OffAddr# a1 a2 a3 a4+{-# NOINLINE writeInt32OffAddr# #-}+writeInt32OffAddr# :: Addr# -> Int# -> Int32# -> State# s -> State# s+writeInt32OffAddr# a1 a2 a3 a4 = GHC.Prim.writeInt32OffAddr# a1 a2 a3 a4+{-# NOINLINE writeWord32OffAddr# #-}+writeWord32OffAddr# :: Addr# -> Int# -> Word32# -> State# s -> State# s+writeWord32OffAddr# a1 a2 a3 a4 = GHC.Prim.writeWord32OffAddr# a1 a2 a3 a4+{-# NOINLINE writeInt64OffAddr# #-}+writeInt64OffAddr# :: Addr# -> Int# -> Int64# -> State# s -> State# s+writeInt64OffAddr# a1 a2 a3 a4 = GHC.Prim.writeInt64OffAddr# a1 a2 a3 a4+{-# NOINLINE writeWord64OffAddr# #-}+writeWord64OffAddr# :: Addr# -> Int# -> Word64# -> State# s -> State# s+writeWord64OffAddr# a1 a2 a3 a4 = GHC.Prim.writeWord64OffAddr# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsChar# #-}+writeWord8OffAddrAsChar# :: Addr# -> Int# -> Char# -> State# s -> State# s+writeWord8OffAddrAsChar# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsChar# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsWideChar# #-}+writeWord8OffAddrAsWideChar# :: Addr# -> Int# -> Char# -> State# s -> State# s+writeWord8OffAddrAsWideChar# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsWideChar# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsInt# #-}+writeWord8OffAddrAsInt# :: Addr# -> Int# -> Int# -> State# s -> State# s+writeWord8OffAddrAsInt# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsInt# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsWord# #-}+writeWord8OffAddrAsWord# :: Addr# -> Int# -> Word# -> State# s -> State# s+writeWord8OffAddrAsWord# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsWord# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsAddr# #-}+writeWord8OffAddrAsAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s+writeWord8OffAddrAsAddr# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsAddr# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsFloat# #-}+writeWord8OffAddrAsFloat# :: Addr# -> Int# -> Float# -> State# s -> State# s+writeWord8OffAddrAsFloat# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsFloat# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsDouble# #-}+writeWord8OffAddrAsDouble# :: Addr# -> Int# -> Double# -> State# s -> State# s+writeWord8OffAddrAsDouble# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsDouble# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsStablePtr# #-}+writeWord8OffAddrAsStablePtr# :: Addr# -> Int# -> StablePtr# a -> State# s -> State# s+writeWord8OffAddrAsStablePtr# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsStablePtr# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsInt16# #-}+writeWord8OffAddrAsInt16# :: Addr# -> Int# -> Int16# -> State# s -> State# s+writeWord8OffAddrAsInt16# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsInt16# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsWord16# #-}+writeWord8OffAddrAsWord16# :: Addr# -> Int# -> Word16# -> State# s -> State# s+writeWord8OffAddrAsWord16# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsWord16# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsInt32# #-}+writeWord8OffAddrAsInt32# :: Addr# -> Int# -> Int32# -> State# s -> State# s+writeWord8OffAddrAsInt32# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsInt32# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsWord32# #-}+writeWord8OffAddrAsWord32# :: Addr# -> Int# -> Word32# -> State# s -> State# s+writeWord8OffAddrAsWord32# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsWord32# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsInt64# #-}+writeWord8OffAddrAsInt64# :: Addr# -> Int# -> Int64# -> State# s -> State# s+writeWord8OffAddrAsInt64# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsInt64# a1 a2 a3 a4+{-# NOINLINE writeWord8OffAddrAsWord64# #-}+writeWord8OffAddrAsWord64# :: Addr# -> Int# -> Word64# -> State# s -> State# s+writeWord8OffAddrAsWord64# a1 a2 a3 a4 = GHC.Prim.writeWord8OffAddrAsWord64# a1 a2 a3 a4+{-# NOINLINE atomicExchangeAddrAddr# #-}+atomicExchangeAddrAddr# :: Addr# -> Addr# -> State# s -> (# State# s,Addr# #)+atomicExchangeAddrAddr# a1 a2 a3 = GHC.Prim.atomicExchangeAddrAddr# a1 a2 a3+{-# NOINLINE atomicExchangeWordAddr# #-}+atomicExchangeWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+atomicExchangeWordAddr# a1 a2 a3 = GHC.Prim.atomicExchangeWordAddr# a1 a2 a3+{-# NOINLINE atomicCasAddrAddr# #-}+atomicCasAddrAddr# :: Addr# -> Addr# -> Addr# -> State# s -> (# State# s,Addr# #)+atomicCasAddrAddr# a1 a2 a3 a4 = GHC.Prim.atomicCasAddrAddr# a1 a2 a3 a4+{-# NOINLINE atomicCasWordAddr# #-}+atomicCasWordAddr# :: Addr# -> Word# -> Word# -> State# s -> (# State# s,Word# #)+atomicCasWordAddr# a1 a2 a3 a4 = GHC.Prim.atomicCasWordAddr# a1 a2 a3 a4+{-# NOINLINE atomicCasWord8Addr# #-}+atomicCasWord8Addr# :: Addr# -> Word8# -> Word8# -> State# s -> (# State# s,Word8# #)+atomicCasWord8Addr# a1 a2 a3 a4 = GHC.Prim.atomicCasWord8Addr# a1 a2 a3 a4+{-# NOINLINE atomicCasWord16Addr# #-}+atomicCasWord16Addr# :: Addr# -> Word16# -> Word16# -> State# s -> (# State# s,Word16# #)+atomicCasWord16Addr# a1 a2 a3 a4 = GHC.Prim.atomicCasWord16Addr# a1 a2 a3 a4+{-# NOINLINE atomicCasWord32Addr# #-}+atomicCasWord32Addr# :: Addr# -> Word32# -> Word32# -> State# s -> (# State# s,Word32# #)+atomicCasWord32Addr# a1 a2 a3 a4 = GHC.Prim.atomicCasWord32Addr# a1 a2 a3 a4+{-# NOINLINE atomicCasWord64Addr# #-}+atomicCasWord64Addr# :: Addr# -> Word64# -> Word64# -> State# s -> (# State# s,Word64# #)+atomicCasWord64Addr# a1 a2 a3 a4 = GHC.Prim.atomicCasWord64Addr# a1 a2 a3 a4+{-# NOINLINE fetchAddWordAddr# #-}+fetchAddWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+fetchAddWordAddr# a1 a2 a3 = GHC.Prim.fetchAddWordAddr# a1 a2 a3+{-# NOINLINE fetchSubWordAddr# #-}+fetchSubWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+fetchSubWordAddr# a1 a2 a3 = GHC.Prim.fetchSubWordAddr# a1 a2 a3+{-# NOINLINE fetchAndWordAddr# #-}+fetchAndWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+fetchAndWordAddr# a1 a2 a3 = GHC.Prim.fetchAndWordAddr# a1 a2 a3+{-# NOINLINE fetchNandWordAddr# #-}+fetchNandWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+fetchNandWordAddr# a1 a2 a3 = GHC.Prim.fetchNandWordAddr# a1 a2 a3+{-# NOINLINE fetchOrWordAddr# #-}+fetchOrWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+fetchOrWordAddr# a1 a2 a3 = GHC.Prim.fetchOrWordAddr# a1 a2 a3+{-# NOINLINE fetchXorWordAddr# #-}+fetchXorWordAddr# :: Addr# -> Word# -> State# s -> (# State# s,Word# #)+fetchXorWordAddr# a1 a2 a3 = GHC.Prim.fetchXorWordAddr# a1 a2 a3+{-# NOINLINE atomicReadWordAddr# #-}+atomicReadWordAddr# :: Addr# -> State# s -> (# State# s,Word# #)+atomicReadWordAddr# a1 a2 = GHC.Prim.atomicReadWordAddr# a1 a2+{-# NOINLINE atomicWriteWordAddr# #-}+atomicWriteWordAddr# :: Addr# -> Word# -> State# s -> State# s+atomicWriteWordAddr# a1 a2 a3 = GHC.Prim.atomicWriteWordAddr# a1 a2 a3+{-# NOINLINE newMutVar# #-}+newMutVar# :: a_levpoly -> State# s -> (# State# s,MutVar# s a_levpoly #)+newMutVar# a1 a2 = GHC.Prim.newMutVar# a1 a2+{-# NOINLINE readMutVar# #-}+readMutVar# :: MutVar# s a_levpoly -> State# s -> (# State# s,a_levpoly #)+readMutVar# a1 a2 = GHC.Prim.readMutVar# a1 a2+{-# NOINLINE writeMutVar# #-}+writeMutVar# :: MutVar# s a_levpoly -> a_levpoly -> State# s -> State# s+writeMutVar# a1 a2 a3 = GHC.Prim.writeMutVar# a1 a2 a3+{-# NOINLINE atomicSwapMutVar# #-}+atomicSwapMutVar# :: MutVar# s a_levpoly -> a_levpoly -> State# s -> (# State# s,a_levpoly #)+atomicSwapMutVar# a1 a2 a3 = GHC.Prim.atomicSwapMutVar# a1 a2 a3+{-# NOINLINE atomicModifyMutVar2# #-}+atomicModifyMutVar2# :: MutVar# s a -> (a -> c) -> State# s -> (# State# s,a,c #)+atomicModifyMutVar2# a1 a2 a3 = GHC.Prim.atomicModifyMutVar2# a1 a2 a3+{-# NOINLINE atomicModifyMutVar_# #-}+atomicModifyMutVar_# :: MutVar# s a -> (a -> a) -> State# s -> (# State# s,a,a #)+atomicModifyMutVar_# a1 a2 a3 = GHC.Prim.atomicModifyMutVar_# a1 a2 a3+{-# NOINLINE casMutVar# #-}+casMutVar# :: MutVar# s a_levpoly -> a_levpoly -> a_levpoly -> State# s -> (# State# s,Int#,a_levpoly #)+casMutVar# a1 a2 a3 a4 = GHC.Prim.casMutVar# a1 a2 a3 a4+{-# NOINLINE catch# #-}+catch# :: (State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> (b_levpoly -> State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)+catch# a1 a2 a3 = GHC.Prim.catch# a1 a2 a3+{-# NOINLINE raise# #-}+raise# :: a_levpoly -> b_reppoly+raise# a1 = GHC.Prim.raise# a1+{-# NOINLINE raiseUnderflow# #-}+raiseUnderflow# :: (# #) -> b_reppoly+raiseUnderflow# a1 = GHC.Prim.raiseUnderflow# a1+{-# NOINLINE raiseOverflow# #-}+raiseOverflow# :: (# #) -> b_reppoly+raiseOverflow# a1 = GHC.Prim.raiseOverflow# a1+{-# NOINLINE raiseDivZero# #-}+raiseDivZero# :: (# #) -> b_reppoly+raiseDivZero# a1 = GHC.Prim.raiseDivZero# a1+{-# NOINLINE raiseIO# #-}+raiseIO# :: a_levpoly -> State# (RealWorld) -> (# State# (RealWorld),b_reppoly #)+raiseIO# a1 a2 = GHC.Prim.raiseIO# a1 a2+{-# NOINLINE maskAsyncExceptions# #-}+maskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)+maskAsyncExceptions# a1 a2 = GHC.Prim.maskAsyncExceptions# a1 a2+{-# NOINLINE maskUninterruptible# #-}+maskUninterruptible# :: (State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)+maskUninterruptible# a1 a2 = GHC.Prim.maskUninterruptible# a1 a2+{-# NOINLINE unmaskAsyncExceptions# #-}+unmaskAsyncExceptions# :: (State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)+unmaskAsyncExceptions# a1 a2 = GHC.Prim.unmaskAsyncExceptions# a1 a2+{-# NOINLINE getMaskingState# #-}+getMaskingState# :: State# (RealWorld) -> (# State# (RealWorld),Int# #)+getMaskingState# a1 = GHC.Prim.getMaskingState# a1+{-# NOINLINE newPromptTag# #-}+newPromptTag# :: State# (RealWorld) -> (# State# (RealWorld),PromptTag# a #)+newPromptTag# a1 = GHC.Prim.newPromptTag# a1+{-# NOINLINE prompt# #-}+prompt# :: PromptTag# a -> (State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)+prompt# a1 a2 a3 = GHC.Prim.prompt# a1 a2 a3+{-# NOINLINE control0# #-}+control0# :: PromptTag# a -> (((State# (RealWorld) -> (# State# (RealWorld),b_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),a #)) -> State# (RealWorld) -> (# State# (RealWorld),b_reppoly #)+control0# a1 a2 a3 = GHC.Prim.control0# a1 a2 a3+{-# NOINLINE atomically# #-}+atomically# :: (State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)+atomically# a1 a2 = GHC.Prim.atomically# a1 a2+{-# NOINLINE retry# #-}+retry# :: State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)+retry# a1 = GHC.Prim.retry# a1+{-# NOINLINE catchRetry# #-}+catchRetry# :: (State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)) -> (State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)+catchRetry# a1 a2 a3 = GHC.Prim.catchRetry# a1 a2 a3+{-# NOINLINE catchSTM# #-}+catchSTM# :: (State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)) -> (b -> State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)) -> State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)+catchSTM# a1 a2 a3 = GHC.Prim.catchSTM# a1 a2 a3+{-# NOINLINE newTVar# #-}+newTVar# :: a_levpoly -> State# s -> (# State# s,TVar# s a_levpoly #)+newTVar# a1 a2 = GHC.Prim.newTVar# a1 a2+{-# NOINLINE readTVar# #-}+readTVar# :: TVar# s a_levpoly -> State# s -> (# State# s,a_levpoly #)+readTVar# a1 a2 = GHC.Prim.readTVar# a1 a2+{-# NOINLINE readTVarIO# #-}+readTVarIO# :: TVar# s a_levpoly -> State# s -> (# State# s,a_levpoly #)+readTVarIO# a1 a2 = GHC.Prim.readTVarIO# a1 a2+{-# NOINLINE writeTVar# #-}+writeTVar# :: TVar# s a_levpoly -> a_levpoly -> State# s -> State# s+writeTVar# a1 a2 a3 = GHC.Prim.writeTVar# a1 a2 a3+{-# NOINLINE newMVar# #-}+newMVar# :: State# s -> (# State# s,MVar# s a_levpoly #)+newMVar# a1 = GHC.Prim.newMVar# a1+{-# NOINLINE takeMVar# #-}+takeMVar# :: MVar# s a_levpoly -> State# s -> (# State# s,a_levpoly #)+takeMVar# a1 a2 = GHC.Prim.takeMVar# a1 a2+{-# NOINLINE tryTakeMVar# #-}+tryTakeMVar# :: MVar# s a_levpoly -> State# s -> (# State# s,Int#,a_levpoly #)+tryTakeMVar# a1 a2 = GHC.Prim.tryTakeMVar# a1 a2+{-# NOINLINE putMVar# #-}+putMVar# :: MVar# s a_levpoly -> a_levpoly -> State# s -> State# s+putMVar# a1 a2 a3 = GHC.Prim.putMVar# a1 a2 a3+{-# NOINLINE tryPutMVar# #-}+tryPutMVar# :: MVar# s a_levpoly -> a_levpoly -> State# s -> (# State# s,Int# #)+tryPutMVar# a1 a2 a3 = GHC.Prim.tryPutMVar# a1 a2 a3+{-# NOINLINE readMVar# #-}+readMVar# :: MVar# s a_levpoly -> State# s -> (# State# s,a_levpoly #)+readMVar# a1 a2 = GHC.Prim.readMVar# a1 a2+{-# NOINLINE tryReadMVar# #-}+tryReadMVar# :: MVar# s a_levpoly -> State# s -> (# State# s,Int#,a_levpoly #)+tryReadMVar# a1 a2 = GHC.Prim.tryReadMVar# a1 a2+{-# NOINLINE isEmptyMVar# #-}+isEmptyMVar# :: MVar# s a_levpoly -> State# s -> (# State# s,Int# #)+isEmptyMVar# a1 a2 = GHC.Prim.isEmptyMVar# a1 a2+{-# NOINLINE newIOPort# #-}+newIOPort# :: State# s -> (# State# s,IOPort# s a_levpoly #)+newIOPort# a1 = GHC.Prim.newIOPort# a1+{-# NOINLINE readIOPort# #-}+readIOPort# :: IOPort# s a_levpoly -> State# s -> (# State# s,a_levpoly #)+readIOPort# a1 a2 = GHC.Prim.readIOPort# a1 a2+{-# NOINLINE writeIOPort# #-}+writeIOPort# :: IOPort# s a_levpoly -> a_levpoly -> State# s -> (# State# s,Int# #)+writeIOPort# a1 a2 a3 = GHC.Prim.writeIOPort# a1 a2 a3+{-# NOINLINE delay# #-}+delay# :: Int# -> State# s -> State# s+delay# a1 a2 = GHC.Prim.delay# a1 a2+{-# NOINLINE waitRead# #-}+waitRead# :: Int# -> State# s -> State# s+waitRead# a1 a2 = GHC.Prim.waitRead# a1 a2+{-# NOINLINE waitWrite# #-}+waitWrite# :: Int# -> State# s -> State# s+waitWrite# a1 a2 = GHC.Prim.waitWrite# a1 a2+{-# NOINLINE fork# #-}+fork# :: (State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),ThreadId# #)+fork# a1 a2 = GHC.Prim.fork# a1 a2+{-# NOINLINE forkOn# #-}+forkOn# :: Int# -> (State# (RealWorld) -> (# State# (RealWorld),a_reppoly #)) -> State# (RealWorld) -> (# State# (RealWorld),ThreadId# #)+forkOn# a1 a2 a3 = GHC.Prim.forkOn# a1 a2 a3+{-# NOINLINE killThread# #-}+killThread# :: ThreadId# -> a -> State# (RealWorld) -> State# (RealWorld)+killThread# a1 a2 a3 = GHC.Prim.killThread# a1 a2 a3+{-# NOINLINE yield# #-}+yield# :: State# (RealWorld) -> State# (RealWorld)+yield# a1 = GHC.Prim.yield# a1+{-# NOINLINE myThreadId# #-}+myThreadId# :: State# (RealWorld) -> (# State# (RealWorld),ThreadId# #)+myThreadId# a1 = GHC.Prim.myThreadId# a1+{-# NOINLINE labelThread# #-}+labelThread# :: ThreadId# -> ByteArray# -> State# (RealWorld) -> State# (RealWorld)+labelThread# a1 a2 a3 = GHC.Prim.labelThread# a1 a2 a3+{-# NOINLINE isCurrentThreadBound# #-}+isCurrentThreadBound# :: State# (RealWorld) -> (# State# (RealWorld),Int# #)+isCurrentThreadBound# a1 = GHC.Prim.isCurrentThreadBound# a1+{-# NOINLINE noDuplicate# #-}+noDuplicate# :: State# s -> State# s+noDuplicate# a1 = GHC.Prim.noDuplicate# a1+{-# NOINLINE threadLabel# #-}+threadLabel# :: ThreadId# -> State# (RealWorld) -> (# State# (RealWorld),Int#,ByteArray# #)+threadLabel# a1 a2 = GHC.Prim.threadLabel# a1 a2+{-# NOINLINE threadStatus# #-}+threadStatus# :: ThreadId# -> State# (RealWorld) -> (# State# (RealWorld),Int#,Int#,Int# #)+threadStatus# a1 a2 = GHC.Prim.threadStatus# a1 a2+{-# NOINLINE listThreads# #-}+listThreads# :: State# (RealWorld) -> (# State# (RealWorld),Array# (ThreadId#) #)+listThreads# a1 = GHC.Prim.listThreads# a1+{-# NOINLINE mkWeak# #-}+mkWeak# :: a_levpoly -> b_levpoly -> (State# (RealWorld) -> (# State# (RealWorld),c #)) -> State# (RealWorld) -> (# State# (RealWorld),Weak# b_levpoly #)+mkWeak# a1 a2 a3 a4 = GHC.Prim.mkWeak# a1 a2 a3 a4+{-# NOINLINE mkWeakNoFinalizer# #-}+mkWeakNoFinalizer# :: a_levpoly -> b_levpoly -> State# (RealWorld) -> (# State# (RealWorld),Weak# b_levpoly #)+mkWeakNoFinalizer# a1 a2 a3 = GHC.Prim.mkWeakNoFinalizer# a1 a2 a3+{-# NOINLINE addCFinalizerToWeak# #-}+addCFinalizerToWeak# :: Addr# -> Addr# -> Int# -> Addr# -> Weak# b_levpoly -> State# (RealWorld) -> (# State# (RealWorld),Int# #)+addCFinalizerToWeak# a1 a2 a3 a4 a5 a6 = GHC.Prim.addCFinalizerToWeak# a1 a2 a3 a4 a5 a6+{-# NOINLINE deRefWeak# #-}+deRefWeak# :: Weak# a_levpoly -> State# (RealWorld) -> (# State# (RealWorld),Int#,a_levpoly #)+deRefWeak# a1 a2 = GHC.Prim.deRefWeak# a1 a2+{-# NOINLINE finalizeWeak# #-}+finalizeWeak# :: Weak# a_levpoly -> State# (RealWorld) -> (# State# (RealWorld),Int#,State# (RealWorld) -> (# State# (RealWorld),b #) #)+finalizeWeak# a1 a2 = GHC.Prim.finalizeWeak# a1 a2+{-# NOINLINE touch# #-}+touch# :: a_levpoly -> State# s -> State# s+touch# a1 a2 = GHC.Prim.touch# a1 a2+{-# NOINLINE makeStablePtr# #-}+makeStablePtr# :: a_levpoly -> State# (RealWorld) -> (# State# (RealWorld),StablePtr# a_levpoly #)+makeStablePtr# a1 a2 = GHC.Prim.makeStablePtr# a1 a2+{-# NOINLINE deRefStablePtr# #-}+deRefStablePtr# :: StablePtr# a_levpoly -> State# (RealWorld) -> (# State# (RealWorld),a_levpoly #)+deRefStablePtr# a1 a2 = GHC.Prim.deRefStablePtr# a1 a2+{-# NOINLINE eqStablePtr# #-}+eqStablePtr# :: StablePtr# a_levpoly -> StablePtr# a_levpoly -> Int#+eqStablePtr# a1 a2 = GHC.Prim.eqStablePtr# a1 a2+{-# NOINLINE makeStableName# #-}+makeStableName# :: a_levpoly -> State# (RealWorld) -> (# State# (RealWorld),StableName# a_levpoly #)+makeStableName# a1 a2 = GHC.Prim.makeStableName# a1 a2+{-# NOINLINE stableNameToInt# #-}+stableNameToInt# :: StableName# a_levpoly -> Int#+stableNameToInt# a1 = GHC.Prim.stableNameToInt# a1+{-# NOINLINE compactNew# #-}+compactNew# :: Word# -> State# (RealWorld) -> (# State# (RealWorld),Compact# #)+compactNew# a1 a2 = GHC.Prim.compactNew# a1 a2+{-# NOINLINE compactResize# #-}+compactResize# :: Compact# -> Word# -> State# (RealWorld) -> State# (RealWorld)+compactResize# a1 a2 a3 = GHC.Prim.compactResize# a1 a2 a3+{-# NOINLINE compactContains# #-}+compactContains# :: Compact# -> a -> State# (RealWorld) -> (# State# (RealWorld),Int# #)+compactContains# a1 a2 a3 = GHC.Prim.compactContains# a1 a2 a3+{-# NOINLINE compactContainsAny# #-}+compactContainsAny# :: a -> State# (RealWorld) -> (# State# (RealWorld),Int# #)+compactContainsAny# a1 a2 = GHC.Prim.compactContainsAny# a1 a2+{-# NOINLINE compactGetFirstBlock# #-}+compactGetFirstBlock# :: Compact# -> State# (RealWorld) -> (# State# (RealWorld),Addr#,Word# #)+compactGetFirstBlock# a1 a2 = GHC.Prim.compactGetFirstBlock# a1 a2+{-# NOINLINE compactGetNextBlock# #-}+compactGetNextBlock# :: Compact# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld),Addr#,Word# #)+compactGetNextBlock# a1 a2 a3 = GHC.Prim.compactGetNextBlock# a1 a2 a3+{-# NOINLINE compactAllocateBlock# #-}+compactAllocateBlock# :: Word# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld),Addr# #)+compactAllocateBlock# a1 a2 a3 = GHC.Prim.compactAllocateBlock# a1 a2 a3+{-# NOINLINE compactFixupPointers# #-}+compactFixupPointers# :: Addr# -> Addr# -> State# (RealWorld) -> (# State# (RealWorld),Compact#,Addr# #)+compactFixupPointers# a1 a2 a3 = GHC.Prim.compactFixupPointers# a1 a2 a3+{-# NOINLINE compactAdd# #-}+compactAdd# :: Compact# -> a -> State# (RealWorld) -> (# State# (RealWorld),a #)+compactAdd# a1 a2 a3 = GHC.Prim.compactAdd# a1 a2 a3+{-# NOINLINE compactAddWithSharing# #-}+compactAddWithSharing# :: Compact# -> a -> State# (RealWorld) -> (# State# (RealWorld),a #)+compactAddWithSharing# a1 a2 a3 = GHC.Prim.compactAddWithSharing# a1 a2 a3+{-# NOINLINE compactSize# #-}+compactSize# :: Compact# -> State# (RealWorld) -> (# State# (RealWorld),Word# #)+compactSize# a1 a2 = GHC.Prim.compactSize# a1 a2+{-# NOINLINE reallyUnsafePtrEquality# #-}+reallyUnsafePtrEquality# :: a_levpoly -> b_levpoly -> Int#+reallyUnsafePtrEquality# a1 a2 = GHC.Prim.reallyUnsafePtrEquality# a1 a2+{-# NOINLINE par# #-}+par# :: a -> Int#+par# a1 = GHC.Prim.par# a1+{-# NOINLINE spark# #-}+spark# :: a -> State# s -> (# State# s,a #)+spark# a1 a2 = GHC.Prim.spark# a1 a2+{-# NOINLINE getSpark# #-}+getSpark# :: State# s -> (# State# s,Int#,a #)+getSpark# a1 = GHC.Prim.getSpark# a1+{-# NOINLINE numSparks# #-}+numSparks# :: State# s -> (# State# s,Int# #)+numSparks# a1 = GHC.Prim.numSparks# a1+{-# NOINLINE keepAlive# #-}+keepAlive# :: a_levpoly -> State# s -> (State# s -> b_reppoly) -> b_reppoly+keepAlive# a1 a2 a3 = GHC.Prim.keepAlive# a1 a2 a3+{-# NOINLINE dataToTagSmall# #-}+dataToTagSmall# :: a_levpoly -> Int#+dataToTagSmall# a1 = GHC.Prim.dataToTagSmall# a1+{-# NOINLINE dataToTagLarge# #-}+dataToTagLarge# :: a_levpoly -> Int#+dataToTagLarge# a1 = GHC.Prim.dataToTagLarge# a1+{-# NOINLINE addrToAny# #-}+addrToAny# :: Addr# -> (# a_levpoly #)+addrToAny# a1 = GHC.Prim.addrToAny# a1+{-# NOINLINE anyToAddr# #-}+anyToAddr# :: a -> State# (RealWorld) -> (# State# (RealWorld),Addr# #)+anyToAddr# a1 a2 = GHC.Prim.anyToAddr# a1 a2+{-# NOINLINE mkApUpd0# #-}+mkApUpd0# :: BCO -> (# a #)+mkApUpd0# a1 = GHC.Prim.mkApUpd0# a1+{-# NOINLINE newBCO# #-}+newBCO# :: ByteArray# -> ByteArray# -> Array# a -> Int# -> ByteArray# -> State# s -> (# State# s,BCO #)+newBCO# a1 a2 a3 a4 a5 a6 = GHC.Prim.newBCO# a1 a2 a3 a4 a5 a6+{-# NOINLINE unpackClosure# #-}+unpackClosure# :: a -> (# Addr#,ByteArray#,Array# b #)+unpackClosure# a1 = GHC.Prim.unpackClosure# a1+{-# NOINLINE closureSize# #-}+closureSize# :: a -> Int#+closureSize# a1 = GHC.Prim.closureSize# a1+{-# NOINLINE getApStackVal# #-}+getApStackVal# :: a -> Int# -> (# Int#,b #)+getApStackVal# a1 a2 = GHC.Prim.getApStackVal# a1 a2+{-# NOINLINE getCCSOf# #-}+getCCSOf# :: a -> State# s -> (# State# s,Addr# #)+getCCSOf# a1 a2 = GHC.Prim.getCCSOf# a1 a2+{-# NOINLINE getCurrentCCS# #-}+getCurrentCCS# :: a -> State# s -> (# State# s,Addr# #)+getCurrentCCS# a1 a2 = GHC.Prim.getCurrentCCS# a1 a2+{-# NOINLINE clearCCS# #-}+clearCCS# :: (State# s -> (# State# s,a #)) -> State# s -> (# State# s,a #)+clearCCS# a1 a2 = GHC.Prim.clearCCS# a1 a2+{-# NOINLINE whereFrom# #-}+whereFrom# :: a -> Addr# -> State# s -> (# State# s,Int# #)+whereFrom# a1 a2 a3 = GHC.Prim.whereFrom# a1 a2 a3+{-# NOINLINE traceEvent# #-}+traceEvent# :: Addr# -> State# s -> State# s+traceEvent# a1 a2 = GHC.Prim.traceEvent# a1 a2+{-# NOINLINE traceBinaryEvent# #-}+traceBinaryEvent# :: Addr# -> Int# -> State# s -> State# s+traceBinaryEvent# a1 a2 a3 = GHC.Prim.traceBinaryEvent# a1 a2 a3+{-# NOINLINE traceMarker# #-}+traceMarker# :: Addr# -> State# s -> State# s+traceMarker# a1 a2 = GHC.Prim.traceMarker# a1 a2+{-# NOINLINE setThreadAllocationCounter# #-}+setThreadAllocationCounter# :: Int64# -> State# (RealWorld) -> State# (RealWorld)+setThreadAllocationCounter# a1 a2 = GHC.Prim.setThreadAllocationCounter# a1 a2+{-# NOINLINE prefetchByteArray3# #-}+prefetchByteArray3# :: ByteArray# -> Int# -> State# s -> State# s+prefetchByteArray3# a1 a2 a3 = GHC.Prim.prefetchByteArray3# a1 a2 a3+{-# NOINLINE prefetchMutableByteArray3# #-}+prefetchMutableByteArray3# :: MutableByteArray# s -> Int# -> State# s -> State# s+prefetchMutableByteArray3# a1 a2 a3 = GHC.Prim.prefetchMutableByteArray3# a1 a2 a3+{-# NOINLINE prefetchAddr3# #-}+prefetchAddr3# :: Addr# -> Int# -> State# s -> State# s+prefetchAddr3# a1 a2 a3 = GHC.Prim.prefetchAddr3# a1 a2 a3+{-# NOINLINE prefetchValue3# #-}+prefetchValue3# :: a -> State# s -> State# s+prefetchValue3# a1 a2 = GHC.Prim.prefetchValue3# a1 a2+{-# NOINLINE prefetchByteArray2# #-}+prefetchByteArray2# :: ByteArray# -> Int# -> State# s -> State# s+prefetchByteArray2# a1 a2 a3 = GHC.Prim.prefetchByteArray2# a1 a2 a3+{-# NOINLINE prefetchMutableByteArray2# #-}+prefetchMutableByteArray2# :: MutableByteArray# s -> Int# -> State# s -> State# s+prefetchMutableByteArray2# a1 a2 a3 = GHC.Prim.prefetchMutableByteArray2# a1 a2 a3+{-# NOINLINE prefetchAddr2# #-}+prefetchAddr2# :: Addr# -> Int# -> State# s -> State# s+prefetchAddr2# a1 a2 a3 = GHC.Prim.prefetchAddr2# a1 a2 a3+{-# NOINLINE prefetchValue2# #-}+prefetchValue2# :: a -> State# s -> State# s+prefetchValue2# a1 a2 = GHC.Prim.prefetchValue2# a1 a2+{-# NOINLINE prefetchByteArray1# #-}+prefetchByteArray1# :: ByteArray# -> Int# -> State# s -> State# s+prefetchByteArray1# a1 a2 a3 = GHC.Prim.prefetchByteArray1# a1 a2 a3+{-# NOINLINE prefetchMutableByteArray1# #-}+prefetchMutableByteArray1# :: MutableByteArray# s -> Int# -> State# s -> State# s+prefetchMutableByteArray1# a1 a2 a3 = GHC.Prim.prefetchMutableByteArray1# a1 a2 a3+{-# NOINLINE prefetchAddr1# #-}+prefetchAddr1# :: Addr# -> Int# -> State# s -> State# s+prefetchAddr1# a1 a2 a3 = GHC.Prim.prefetchAddr1# a1 a2 a3+{-# NOINLINE prefetchValue1# #-}+prefetchValue1# :: a -> State# s -> State# s+prefetchValue1# a1 a2 = GHC.Prim.prefetchValue1# a1 a2+{-# NOINLINE prefetchByteArray0# #-}+prefetchByteArray0# :: ByteArray# -> Int# -> State# s -> State# s+prefetchByteArray0# a1 a2 a3 = GHC.Prim.prefetchByteArray0# a1 a2 a3+{-# NOINLINE prefetchMutableByteArray0# #-}+prefetchMutableByteArray0# :: MutableByteArray# s -> Int# -> State# s -> State# s+prefetchMutableByteArray0# a1 a2 a3 = GHC.Prim.prefetchMutableByteArray0# a1 a2 a3+{-# NOINLINE prefetchAddr0# #-}+prefetchAddr0# :: Addr# -> Int# -> State# s -> State# s+prefetchAddr0# a1 a2 a3 = GHC.Prim.prefetchAddr0# a1 a2 a3+{-# NOINLINE prefetchValue0# #-}+prefetchValue0# :: a -> State# s -> State# s+prefetchValue0# a1 a2 = GHC.Prim.prefetchValue0# a1 a2
GHC/Tuple.hs view
@@ -1,37 +1,52 @@ {-# LANGUAGE Trustworthy #-}-{-# LANGUAGE NoImplicitPrelude, DeriveGeneric #-}+{-# LANGUAGE NoImplicitPrelude, PatternSynonyms, ExplicitNamespaces #-} ----------------------------------------------------------------------------- -- | -- Module : GHC.Tuple -- Copyright : (c) The University of Glasgow 2001 -- License : BSD-style (see the file libraries/ghc-prim/LICENSE)--- +-- -- Maintainer : libraries@haskell.org -- Stability : experimental -- Portability : non-portable (GHC extensions) -- -- The tuple data types --+-- Users should not import this module. It is GHC internal only.+-- ----------------------------------------------------------------------------- -module GHC.Tuple where+module GHC.Tuple (+ Tuple0, Tuple1,+ Unit(..),+ Solo (Solo, MkSolo), getSolo,+ Tuple2(..), Tuple3(..), Tuple4(..), Tuple5(..), Tuple6(..), Tuple7(..), Tuple8(..), Tuple9(..),+ Tuple10(..), Tuple11(..), Tuple12(..), Tuple13(..), Tuple14(..), Tuple15(..), Tuple16(..), Tuple17(..), Tuple18(..), Tuple19(..),+ Tuple20(..), Tuple21(..), Tuple22(..), Tuple23(..), Tuple24(..), Tuple25(..), Tuple26(..), Tuple27(..), Tuple28(..), Tuple29(..),+ Tuple30(..), Tuple31(..), Tuple32(..), Tuple33(..), Tuple34(..), Tuple35(..), Tuple36(..), Tuple37(..), Tuple38(..), Tuple39(..),+ Tuple40(..), Tuple41(..), Tuple42(..), Tuple43(..), Tuple44(..), Tuple45(..), Tuple46(..), Tuple47(..), Tuple48(..), Tuple49(..),+ Tuple50(..), Tuple51(..), Tuple52(..), Tuple53(..), Tuple54(..), Tuple55(..), Tuple56(..), Tuple57(..), Tuple58(..), Tuple59(..),+ Tuple60(..), Tuple61(..), Tuple62(..), Tuple63(..), Tuple64(..),+) where -import GHC.CString () -- Make sure we do it first, so that the- -- implicit Typeable stuff can see GHC.Types.TyCon- -- and unpackCString# etc+-- See W1 of Note [Tracking dependencies on primitives] in GHC.Internal.Base+import GHC.Types () default () -- Double and Integer aren't available yet --- | The unit datatype @()@ has one non-undefined member, the nullary+-- | The unit datatype @Unit@ has one non-undefined member, the nullary -- constructor @()@.-data () = ()+--+-- @since 0.11.0+--+data Unit = () -- The desugarer uses 1-tuples,--- but "()" is already used up for 0-tuples+-- but "Unit" is already used up for 0-tuples -- See Note [One-tuples] in GHC.Builtin.Types --- | @Solo@ is the canonical lifted 1-tuple, just like '(,)' is the canonical--- lifted 2-tuple (pair) and '(,,)' is the canonical lifted 3-tuple (triple).+-- | @Solo@ is the canonical lifted 1-tuple, just like 'Tuple2' is the canonical+-- lifted 2-tuple (pair) and 'Tuple3' is the canonical lifted 3-tuple (triple). -- -- The most important feature of @Solo@ is that it is possible to force its -- "outside" (usually by pattern matching) without forcing its "inside",@@ -77,156 +92,509 @@ -- unary tuples, they can also be useful for fine-grained control of -- strict-spined data structure traversals, and for unifying the -- implementations of lazy and strict mapping functions.-data Solo a = Solo a+data Solo a = MkSolo a +-- This will have to wait for https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0065-type-infix.rst+-- Otherwise the deprecation would apply to the data type as well.+{-# DEPRECATED data Solo "The Solo constructor has been renamed to MkSolo to avoid punning." #-}+pattern Solo :: a -> Solo a+pattern Solo x = MkSolo x+{-# COMPLETE Solo #-}++-- | Extract the value from a 'Solo'. Very often, values should be extracted+-- directly using pattern matching, to control just what gets evaluated when.+-- @getSolo@ is for convenience in situations where that is not the case:+--+-- When the result is passed to a /strict/ function, it makes no difference+-- whether the pattern matching is done on the \"outside\" or on the+-- \"inside\":+--+-- @+-- Data.Set.insert (getSolo sol) set === case sol of Solo v -> Data.Set.insert v set+-- @+--+-- A traversal may be performed in 'Solo' in order to control evaluation+-- internally, while using @getSolo@ to extract the final result. A strict+-- mapping function, for example, could be defined+--+-- @+-- map' :: Traversable t => (a -> b) -> t a -> t b+-- map' f = getSolo . traverse ((Solo $!) . f)+-- @ getSolo :: Solo a -> a -- getSolo is a standalone function, rather than a record field of Solo, -- because Solo is a wired-in TyCon, and a wired-in TyCon that has -- record fields is a bit more inconvenient than if it doesn't. -- (No other wired-in TyCon has record fields.) So it seems easier -- to have getSolo as its own separate function (#20562)-getSolo (Solo a) = a+getSolo (MkSolo a) = a -data (a,b) = (a,b)-data (a,b,c) = (a,b,c)-data (a,b,c,d) = (a,b,c,d)-data (a,b,c,d,e) = (a,b,c,d,e)-data (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)-data (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)-data (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)-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)-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)-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)-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)-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)-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)-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)-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)-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)-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)-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)-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)-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)-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)-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 tuple of zero elements, a synonym for 'Unit'.+--+-- @since 0.11.0+--+type Tuple0 = Unit -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,a1)+-- | A tuple of one element, a synonym for 'Solo'.+--+-- @since 0.11.0+--+type Tuple1 = Solo++-- | A tuple of two elements.+--+-- @since 0.11.0+--+data Tuple2 a b = (a,b)++-- | A tuple of three elements.+--+-- @since 0.11.0+--+data Tuple3 a b c = (a,b,c)++-- | A tuple of four elements.+--+-- @since 0.11.0+--+data Tuple4 a b c d = (a,b,c,d)++-- | A tuple of five elements.+--+-- @since 0.11.0+--+data Tuple5 a b c d e = (a,b,c,d,e)++-- | A tuple of six elements.+--+-- @since 0.11.0+--+data Tuple6 a b c d e f = (a,b,c,d,e,f)++-- | A tuple of seven elements.+--+-- @since 0.11.0+--+data Tuple7 a b c d e f g = (a,b,c,d,e,f,g)++-- | A tuple of eight elements.+--+-- @since 0.11.0+--+data Tuple8 a b c d e f g h = (a,b,c,d,e,f,g,h)++-- | A tuple of nine elements.+--+-- @since 0.11.0+--+data Tuple9 a b c d e f g h i = (a,b,c,d,e,f,g,h,i)++-- | A tuple of ten elements.+--+-- @since 0.11.0+--+data Tuple10 a b c d e f g h i j = (a,b,c,d,e,f,g,h,i,j)++-- | A tuple of eleven elements.+--+-- @since 0.11.0+--+data Tuple11 a b c d e f g h i j k = (a,b,c,d,e,f,g,h,i,j,k)++-- | A tuple of twelve elements.+--+-- @since 0.11.0+--+data Tuple12 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 tuple of 13 elements.+--+-- @since 0.11.0+--+data Tuple13 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 tuple of 14 elements.+--+-- @since 0.11.0+--+data Tuple14 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 tuple of 15 elements.+--+-- @since 0.11.0+--+data Tuple15 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 tuple of 16 elements.+--+-- @since 0.11.0+--+data Tuple16 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 tuple of 17 elements.+--+-- @since 0.11.0+--+data Tuple17 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 tuple of 18 elements.+--+-- @since 0.11.0+--+data Tuple18 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 tuple of 19 elements.+--+-- @since 0.11.0+--+data Tuple19 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 tuple of 20 elements.+--+-- @since 0.11.0+--+data Tuple20 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 tuple of 21 elements.++--+-- @since 0.11.0+--+data Tuple21 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 tuple of 22 elements.+--+-- @since 0.11.0+--+data Tuple22 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 tuple of 23 elements.+--+-- @since 0.11.0+--+data Tuple23 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 tuple of 24 elements.+--+-- @since 0.11.0+--+data Tuple24 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 tuple of 25 elements.+--+-- @since 0.11.0+--+data Tuple25 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 tuple of 26 elements.+--+-- @since 0.11.0+--+data Tuple26 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 tuple of 27 elements.+--+-- @since 0.11.0+--+data Tuple27 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 a1 = (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,a1)-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,a1,b1)++-- | A tuple of 28 elements.+--+-- @since 0.11.0+--+data Tuple28 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 a1 b1 = (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,a1,b1)-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,a1,b1,c1)++-- | A tuple of 29 elements.+--+-- @since 0.11.0+--+data Tuple29 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 a1 b1 c1 = (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,a1,b1,c1)-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,a1,b1,c1,d1)++-- | A tuple of 30 elements.+--+-- @since 0.11.0+--+data Tuple30 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 a1 b1 c1 d1 = (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,a1,b1,c1,d1)-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,a1,b1,c1,d1,e1)++-- | A tuple of 31 elements.+--+-- @since 0.11.0+--+data Tuple31 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 a1 b1 c1 d1 e1 = (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,a1,b1,c1,d1,e1)-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,a1,b1,c1,d1,e1,f1)++-- | A tuple of 32 elements.+--+-- @since 0.11.0+--+data Tuple32 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 a1 b1 c1 d1 e1 f1 = (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,a1,b1,c1,d1,e1,f1)-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,a1,b1,c1,d1,e1,f1,g1)++-- | A tuple of 33 elements.+--+-- @since 0.11.0+--+data Tuple33 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 a1 b1 c1 d1 e1 f1 g1 = (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,a1,b1,c1,d1,e1,f1,g1)-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,a1,b1,c1,d1,e1,f1,g1,h1)++-- | A tuple of 34 elements.+--+-- @since 0.11.0+--+data Tuple34 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 a1 b1 c1 d1 e1 f1 g1 h1 = (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,a1,b1,c1,d1,e1,f1,g1,h1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1)++-- | A tuple of 35 elements.+--+-- @since 0.11.0+--+data Tuple35 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1)++-- | A tuple of 36 elements.+--+-- @since 0.11.0+--+data Tuple36 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1)++-- | A tuple of 37 elements.+--+-- @since 0.11.0+--+data Tuple37 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1)++-- | A tuple of 38 elements.+--+-- @since 0.11.0+--+data Tuple38 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1)++-- | A tuple of 39 elements.+--+-- @since 0.11.0+--+data Tuple39 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1)++-- | A tuple of 40 elements.+--+-- @since 0.11.0+--+data Tuple40 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1)++-- | A tuple of 41 elements.+--+-- @since 0.11.0+--+data Tuple41 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1)++-- | A tuple of 42 elements.+--+-- @since 0.11.0+--+data Tuple42 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1)++-- | A tuple of 43 elements.+--+-- @since 0.11.0+--+data Tuple43 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1)++-- | A tuple of 44 elements.+--+-- @since 0.11.0+--+data Tuple44 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1)++-- | A tuple of 45 elements.+--+-- @since 0.11.0+--+data Tuple45 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1)++-- | A tuple of 46 elements.+--+-- @since 0.11.0+--+data Tuple46 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1)++-- | A tuple of 47 elements.+--+-- @since 0.11.0+--+data Tuple47 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1)++-- | A tuple of 48 elements.+--+-- @since 0.11.0+--+data Tuple48 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1)++-- | A tuple of 49 elements.+--+-- @since 0.11.0+--+data Tuple49 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1)++-- | A tuple of 50 elements.+--+-- @since 0.11.0+--+data Tuple50 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1)++-- | A tuple of 51 elements.+--+-- @since 0.11.0+--+data Tuple51 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1)++-- | A tuple of 52 elements.+--+-- @since 0.11.0+--+data Tuple52 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2)++-- | A tuple of 53 elements.+--+-- @since 0.11.0+--+data Tuple53 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2)++-- | A tuple of 54 elements.+--+-- @since 0.11.0+--+data Tuple54 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2)++-- | A tuple of 55 elements.+--+-- @since 0.11.0+--+data Tuple55 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2)++-- | A tuple of 56 elements.+--+-- @since 0.11.0+--+data Tuple56 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2)++-- | A tuple of 57 elements.+--+-- @since 0.11.0+--+data Tuple57 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2)++-- | A tuple of 58 elements.+--+-- @since 0.11.0+--+data Tuple58 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2)++-- | A tuple of 59 elements.+--+-- @since 0.11.0+--+data Tuple59 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2)++-- | A tuple of 60 elements.+--+-- @since 0.11.0+--+data Tuple60 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2)++-- | A tuple of 61 elements.+--+-- @since 0.11.0+--+data Tuple61 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2)++-- | A tuple of 62 elements.+--+-- @since 0.11.0+--+data Tuple62 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2)++-- | A tuple of 63 elements.+--+-- @since 0.11.0+--+data Tuple63 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2)-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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,- r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2)++-- | A tuple of 64 elements.+--+-- @since 0.11.0+--+data Tuple64 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2 = (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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1, r1,s1,t1,u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2)
GHC/Types.hs view
@@ -1,551 +1,3677 @@ {-# LANGUAGE MagicHash, NoImplicitPrelude, TypeFamilies, UnboxedTuples, MultiParamTypeClasses, RoleAnnotations, CPP, TypeOperators,- PolyKinds, NegativeLiterals, DataKinds #-}--- NegativeLiterals: see Note [Fixity of (->)]--------------------------------------------------------------------------------- |--- Module : GHC.Types--- Copyright : (c) The University of Glasgow 2009--- License : see libraries/ghc-prim/LICENSE------ Maintainer : cvs-ghc@haskell.org--- Stability : internal--- Portability : non-portable (GHC Extensions)------ GHC type definitions.--- Use GHC.Exts from the base package instead of importing this--- module directly.-----------------------------------------------------------------------------------module GHC.Types (- -- Data types that are built-in syntax- -- They are defined here, but not explicitly exported- --- -- Lists: []( [], (:) )- -- Type equality: (~)( Eq# )-- Bool(..), Char(..), Int(..), Word(..),- Float(..), Double(..),- Ordering(..), IO(..),- isTrue#,- SPEC(..),- Symbol,- Any,- type (~~), Coercible,- TYPE, Levity(..), RuntimeRep(..),- LiftedRep, UnliftedRep,- Type, UnliftedType, Constraint,- -- The historical type * should ideally be written as- -- `type *`, without the parentheses. But that's a true- -- pain to parse, and for little gain.- VecCount(..), VecElem(..),- Void#,-- -- * Runtime type representation- Module(..), TrName(..), TyCon(..), TypeLitSort(..),- KindRep(..), KindBndr,-- -- * Multiplicity Types- Multiplicity(..), MultMul- ) where--import GHC.Prim--infixr 5 :---{- *********************************************************************-* *- Functions-* *-********************************************************************* -}--infixr -1 ->-{--Note [Fixity of (->)]-~~~~~~~~~~~~~~~~~~~~~-This declaration is important for :info (->) command (issue #10145)-1) The parser parses -> as if it had lower fixity than 0,- so we conventionally use -1 (issue #15235).-2) Fixities outside the 0-9 range are exceptionally allowed- for (->) (see checkPrecP in RdrHsSyn)-3) The negative fixity -1 must be parsed as a single token,- hence this module requires NegativeLiterals.--}---- | The regular function type-type (->) = FUN 'Many--- See Note [Linear Types] in Multiplicity--{- *********************************************************************-* *- Kinds-* *-********************************************************************* -}---- | The kind of constraints, like @Show a@-data Constraint---- | The runtime representation of lifted types.-type LiftedRep = 'BoxedRep 'Lifted---- | The runtime representation of unlifted types.-type UnliftedRep = 'BoxedRep 'Unlifted---- | The kind of types with lifted values. For example @Int :: Type@.-type Type = TYPE LiftedRep---- | The kind of boxed, unlifted values, for example @Array#@ or a user-defined--- unlifted data type, using @-XUnliftedDataTypes@.-type UnliftedType = TYPE UnliftedRep--data Multiplicity = Many | One--type family MultMul (a :: Multiplicity) (b :: Multiplicity) :: Multiplicity where- MultMul 'One x = x- MultMul x 'One = x- MultMul 'Many x = 'Many- MultMul x 'Many = 'Many--{- *********************************************************************-* *- Symbol-* *-********************************************************************* -}---- | (Kind) This is the kind of type-level symbols.--- Declared here because class IP needs it-data Symbol--{- *********************************************************************-* *- Any-* *-********************************************************************* -}---- | The type constructor 'Any' is type to which you can unsafely coerce any--- lifted type, and back. More concretely, for a lifted type @t@ and--- value @x :: t@, -- @unsafeCoerce (unsafeCoerce x :: Any) :: t@ is equivalent--- to @x@.----type family Any :: k where { }--- See Note [Any types] in GHC.Builtin.Types. Also, for a bit of history on Any see--- #10886. Note that this must be a *closed* type family: we need to ensure--- that this can't reduce to a `data` type for the results discussed in--- Note [Any types].--{- *********************************************************************-* *- Lists-- NB: lists are built-in syntax, and hence not explicitly exported-* *-********************************************************************* -}---- | The builtin list type, usually written in its non-prefix form @[a]@.------ ==== __Examples__------ Unless the OverloadedLists extension is enabled, list literals are--- syntatic sugar for repeated applications of @:@ and @[]@.------ >>> 1:2:3:4:[] == [1,2,3,4]--- True------ Similarly, unless the OverloadedStrings extension is enabled, string--- literals are syntactic sugar for a lists of characters.------ >>> ['h','e','l','l','o'] == "hello"--- True----data [] a = [] | a : [a]---{- *********************************************************************-* *- Ordering-* *-********************************************************************* -}--data Ordering = LT | EQ | GT---{- *********************************************************************-* *- Int, Char, Word, Float, Double-* *-********************************************************************* -}--{- | The character type 'Char' is an enumeration whose values represent-Unicode (or equivalently ISO\/IEC 10646) code points (i.e. characters, see-<http://www.unicode.org/> for details). This set extends the ISO 8859-1-(Latin-1) character set (the first 256 characters), 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 'Data.Char.ord' and-'Data.Char.chr').--}-data {-# CTYPE "HsChar" #-} Char = C# 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 {-# CTYPE "HsInt" #-} Int = I# Int#---- |A 'Word' is an unsigned integral type, with the same size as 'Int'.-data {-# CTYPE "HsWord" #-} Word = W# Word#---- | 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 {-# CTYPE "HsFloat" #-} Float = F# 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 {-# CTYPE "HsDouble" #-} Double = D# Double#---{- *********************************************************************-* *- IO-* *-********************************************************************* -}--{- |-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 'Prelude.>>' and 'Prelude.>>=' operations from the 'Prelude.Monad'-class.--}-newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))---{- *********************************************************************-* *- (~) and Coercible-- NB: (~) is built-in syntax, and hence not explicitly exported-* *-********************************************************************* -}--{--Note [Kind-changing of (~) and Coercible]-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~--(~) and Coercible are tricky to define. To the user, they must appear as-constraints, but we cannot define them as such in Haskell. But we also cannot-just define them only in GHC.Prim (like (->)), because we need a real module-for them, e.g. to compile the constructor's info table.--Furthermore the type of MkCoercible cannot be written in Haskell-(no syntax for ~#R).--So we define them as regular data types in GHC.Types, and do magic in GHC.Builtin.Types,-inside GHC, to change the kind and type.--}----- | Lifted, heterogeneous equality. By lifted, we mean that it--- can be bogus (deferred type error). By heterogeneous, the two--- types @a@ and @b@ might have different kinds. Because @~~@ can--- appear unexpectedly in error messages to users who do not care--- about the difference between heterogeneous equality @~~@ and--- homogeneous equality @~@, this is printed as @~@ unless--- @-fprint-equality-relations@ is set.------ In @0.7.0@, the fixity was set to @infix 4@ to match the fixity of 'Data.Type.Equality.:~~:'.-class a ~~ b-- -- See also Note [The equality types story] in GHC.Builtin.Types.Prim---- | Lifted, homogeneous equality. By lifted, we mean that it--- can be bogus (deferred type error). By homogeneous, the two--- types @a@ and @b@ must have the same kinds.---- In @0.7.0@, the fixity was set to @infix 4@ to match the fixity of 'Data.Type.Equality.:~:'.-class a ~ b--infix 4 ~, ~~- -- See also Note [The equality types story] in GHC.Builtin.Types.Prim---- | @Coercible@ is a two-parameter class that has instances for types @a@ and @b@ if--- the compiler can infer that they have the same representation. This class--- does not have regular instances; instead they are created on-the-fly during--- type-checking. Trying to manually declare an instance of @Coercible@--- is an error.------ Nevertheless one can pretend that the following three kinds of instances--- exist. First, as a trivial base-case:------ @instance Coercible a a@------ Furthermore, for every type constructor there is--- an instance that allows to coerce under the type constructor. For--- example, let @D@ be a prototypical type constructor (@data@ or--- @newtype@) with three type arguments, which have roles @nominal@,--- @representational@ resp. @phantom@. Then there is an instance of--- the form------ @instance Coercible b b\' => Coercible (D a b c) (D a b\' c\')@------ Note that the @nominal@ type arguments are equal, the--- @representational@ type arguments can differ, but need to have a--- @Coercible@ instance themself, and the @phantom@ type arguments can be--- changed arbitrarily.------ The third kind of instance exists for every @newtype NT = MkNT T@ and--- comes in two variants, namely------ @instance Coercible a T => Coercible a NT@------ @instance Coercible T b => Coercible NT b@------ This instance is only usable if the constructor @MkNT@ is in scope.------ If, as a library author of a type constructor like @Set a@, you--- want to prevent a user of your module to write--- @coerce :: Set T -> Set NT@,--- you need to set the role of @Set@\'s type parameter to @nominal@,--- by writing------ @type role Set nominal@------ For more details about this feature, please refer to--- <http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/coercible.pdf Safe Coercions>--- by Joachim Breitner, Richard A. Eisenberg, Simon Peyton Jones and Stephanie Weirich.------ @since 4.7.0.0-class Coercible (a :: k) (b :: k)- -- See also Note [The equality types story] in GHC.Builtin.Types.Prim--{- *********************************************************************-* *- Bool, and isTrue#-* *-********************************************************************* -}--data {-# CTYPE "HsBool" #-} Bool = False | True--{-# INLINE isTrue# #-}--- | Alias for 'tagToEnum#'. Returns True if its parameter is 1# and False--- if it is 0#.-isTrue# :: Int# -> Bool -- See Note [Optimizing isTrue#]-isTrue# x = tagToEnum# x--{- Note [Optimizing isTrue#]-~~~~~~~~~~~~~~~~~~~~~~~~~~~~-Current definition of isTrue# is a temporary workaround. We would like to-have functions isTrue# and isFalse# defined like this:-- isTrue# :: Int# -> Bool- isTrue# 1# = True- isTrue# _ = False-- isFalse# :: Int# -> Bool- isFalse# 0# = True- isFalse# _ = False--These functions would allow us to safely check if a tag can represent True-or False. Using isTrue# and isFalse# as defined above will not introduce-additional case into the code. When we scrutinize return value of isTrue#-or isFalse#, either explicitly in a case expression or implicitly in a guard,-the result will always be a single case expression (given that optimizations-are turned on). This results from case-of-case transformation. Consider this-code (this is both valid Haskell and Core):--case isTrue# (a ># b) of- True -> e1- False -> e2--Inlining isTrue# gives:--case (case (a ># b) of { 1# -> True; _ -> False } ) of- True -> e1- False -> e2--Case-of-case transforms that to:--case (a ># b) of- 1# -> case True of- True -> e1- False -> e2- _ -> case False of- True -> e1- False -> e2--Which is then simplified by case-of-known-constructor:--case (a ># b) of- 1# -> e1- _ -> e2--While we get good Core here, the code generator will generate very bad Cmm-if e1 or e2 do allocation. It will push heap checks into case alternatives-which results in about 2.5% increase in code size. Until this is improved we-just make isTrue# an alias to tagToEnum#. This is a temporary solution (if-you're reading this in 2023 then things went wrong). See #8326.--}---{- *********************************************************************-* *- SPEC-* *-********************************************************************* -}---- | 'SPEC' is used by GHC in the @SpecConstr@ pass in order to inform--- the compiler when to be particularly aggressive. In particular, it--- tells GHC to specialize regardless of size or the number of--- specializations. However, not all loops fall into this category.------ Libraries can specify this by using 'SPEC' data type to inform which--- loops should be aggressively specialized.-data SPEC = SPEC | SPEC2---{- *********************************************************************-* *- Levity polymorphism-* *-********************************************************************* -}---- | Whether a boxed type is lifted or unlifted.-data Levity = Lifted | Unlifted---- | GHC maintains a property that the kind of all inhabited types--- (as distinct from type constructors or type-level data) tells us--- the runtime representation of values of that type. This datatype--- encodes the choice of runtime value.--- Note that 'TYPE' is parameterised by 'RuntimeRep'; this is precisely--- what we mean by the fact that a type's kind encodes the runtime--- representation.------ For boxed values (that is, values that are represented by a pointer),--- a further distinction is made, between lifted types (that contain ⊥),--- and unlifted ones (that don't).-data RuntimeRep = VecRep VecCount VecElem -- ^ a SIMD vector type- | TupleRep [RuntimeRep] -- ^ An unboxed tuple of the given reps- | SumRep [RuntimeRep] -- ^ An unboxed sum of the given reps- | BoxedRep Levity -- ^ boxed; represented by a pointer- | IntRep -- ^ signed, word-sized value- | Int8Rep -- ^ signed, 8-bit value- | Int16Rep -- ^ signed, 16-bit value- | Int32Rep -- ^ signed, 32-bit value- | Int64Rep -- ^ signed, 64-bit value (on 32-bit only)- | WordRep -- ^ unsigned, word-sized value- | Word8Rep -- ^ unsigned, 8-bit value- | Word16Rep -- ^ unsigned, 16-bit value- | Word32Rep -- ^ unsigned, 32-bit value- | Word64Rep -- ^ unsigned, 64-bit value (on 32-bit only)- | AddrRep -- ^ A pointer, but /not/ to a Haskell value- | FloatRep -- ^ a 32-bit floating point number- | DoubleRep -- ^ a 64-bit floating point number---- RuntimeRep is intimately tied to TyCon.RuntimeRep (in GHC proper). See--- Note [RuntimeRep and PrimRep] in RepType.--- See also Note [Wiring in RuntimeRep] in GHC.Builtin.Types--- See also Note [TYPE and RuntimeRep] in GHC.Builtin.Type.Prim---- | Length of a SIMD vector type-data VecCount = Vec2- | Vec4- | Vec8- | Vec16- | Vec32- | Vec64--- Enum, Bounded instances in GHC.Enum---- | Element of a SIMD vector type-data VecElem = Int8ElemRep- | Int16ElemRep- | Int32ElemRep- | Int64ElemRep- | Word8ElemRep- | Word16ElemRep- | Word32ElemRep- | Word64ElemRep- | FloatElemRep- | DoubleElemRep--- Enum, Bounded instances in GHC.Enum--{-# DEPRECATED Void# "Void# is now an alias for the unboxed tuple (# #)." #-}-type Void# = (# #)--{- *********************************************************************-* *- Runtime representation of TyCon-* *-********************************************************************* -}--{- Note [Runtime representation of modules and tycons]-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-We generate a binding for M.$modName and M.$tcT for every module M and-data type T. Things to think about-- - We want them to be economical on space; ideally pure data with no thunks.-- - We do this for every module (except this module GHC.Types), so we can't- depend on anything else (eg string unpacking code)--That's why we have these terribly low-level representations. The TrName-type lets us use the TrNameS constructor when allocating static data;-but we also need TrNameD for the case where we are deserialising a TyCon-or Module (for example when deserialising a TypeRep), in which case we-can't conveniently come up with an Addr#.--}--#include "MachDeps.h"--data Module = Module- TrName -- ^ Package name- TrName -- ^ Module name--data TrName- = TrNameS Addr# -- ^ Static- | TrNameD [Char] -- ^ Dynamic---- | A de Bruijn index for a binder within a 'KindRep'.-type KindBndr = Int--#if WORD_SIZE_IN_BITS < 64-#define WORD64_TY Word64#-#else-#define WORD64_TY Word#-#endif---- | The representation produced by GHC for conjuring up the kind of a--- 'Data.Typeable.TypeRep'.---- See Note [Representing TyCon kinds: KindRep] in GHC.Tc.Instance.Typeable.-data KindRep = KindRepTyConApp TyCon [KindRep]- | KindRepVar !KindBndr- | KindRepApp KindRep KindRep- | KindRepFun KindRep KindRep- | KindRepTYPE !RuntimeRep- | KindRepTypeLitS TypeLitSort Addr#- | KindRepTypeLitD TypeLitSort [Char]--data TypeLitSort = TypeLitSymbol- | TypeLitNat- | TypeLitChar---- Show instance for TyCon found in GHC.Show-data TyCon = TyCon WORD64_TY -- ^ Fingerprint (high)- WORD64_TY -- ^ Fingerprint (low)- Module -- ^ Module in which this is defined- TrName -- ^ Type constructor name- Int# -- ^ How many kind variables do we accept?- KindRep -- ^ A representation of the type's kind+ PolyKinds, NegativeLiterals, DataKinds, ScopedTypeVariables,+ TypeApplications, StandaloneKindSignatures, GADTs,+ FlexibleInstances, UndecidableInstances, UnboxedSums #-}+-- NegativeLiterals: see Note [Fixity of (->)]+{-# OPTIONS_HADDOCK print-explicit-runtime-reps #-}+-----------------------------------------------------------------------------+-- |+-- Module : GHC.Types+-- Copyright : (c) The University of Glasgow 2009+-- License : see libraries/ghc-prim/LICENSE+--+-- Maintainer : ghc-devs@haskell.org+-- Stability : internal+-- Portability : non-portable (GHC Extensions)+--+-- GHC type definitions.+-- Use GHC.Exts from the base package instead of importing this+-- module directly.+--+-----------------------------------------------------------------------------++module GHC.Types (+ -- * Built-in types+ Bool(..), Char(..), Int(..), Word(..),+ Float(..), Double(..),+ Ordering(..), IO(..),++ List, -- List( [], (:) )+ -- List constructors are not exported+ -- because they are built-in syntax++ isTrue#,+ SPEC(..),+ Symbol,+ Any,++ -- * Type equality+ type (~), type (~~), Coercible,++ -- * Representation polymorphism+ TYPE, CONSTRAINT,+ Levity(..), RuntimeRep(..),+ LiftedRep, UnliftedRep,+ Type, UnliftedType, Constraint,+ -- The historical type * should ideally be written as+ -- `type *`, without the parentheses. But that's a true+ -- pain to parse, and for little gain.+ ZeroBitRep, ZeroBitType,+ VecCount(..), VecElem(..),+ Void#,++ -- * Boxing constructors+ DictBox( MkDictBox ),+ WordBox( MkWordBox), IntBox( MkIntBox),+ FloatBox( MkFloatBox), DoubleBox( MkDoubleBox),++ -- * Multiplicity types+ Multiplicity(..), MultMul,++ -- * Runtime type representation+ Module(..), TrName(..), TyCon(..), TypeLitSort(..),+ KindRep(..), KindBndr,++ -- * Unboxed tuples+ Unit#,+ Solo#(..),+ Tuple0#,+ Tuple1#,+ Tuple2#,+ Tuple3#,+ Tuple4#,+ Tuple5#,+ Tuple6#,+ Tuple7#,+ Tuple8#,+ Tuple9#,+ Tuple10#,+ Tuple11#,+ Tuple12#,+ Tuple13#,+ Tuple14#,+ Tuple15#,+ Tuple16#,+ Tuple17#,+ Tuple18#,+ Tuple19#,+ Tuple20#,+ Tuple21#,+ Tuple22#,+ Tuple23#,+ Tuple24#,+ Tuple25#,+ Tuple26#,+ Tuple27#,+ Tuple28#,+ Tuple29#,+ Tuple30#,+ Tuple31#,+ Tuple32#,+ Tuple33#,+ Tuple34#,+ Tuple35#,+ Tuple36#,+ Tuple37#,+ Tuple38#,+ Tuple39#,+ Tuple40#,+ Tuple41#,+ Tuple42#,+ Tuple43#,+ Tuple44#,+ Tuple45#,+ Tuple46#,+ Tuple47#,+ Tuple48#,+ Tuple49#,+ Tuple50#,+ Tuple51#,+ Tuple52#,+ Tuple53#,+ Tuple54#,+ Tuple55#,+ Tuple56#,+ Tuple57#,+ Tuple58#,+ Tuple59#,+ Tuple60#,+ Tuple61#,+ Tuple62#,+ Tuple63#,+ Tuple64#,++ -- * Unboxed sums+ Sum2#,+ Sum3#,+ Sum4#,+ Sum5#,+ Sum6#,+ Sum7#,+ Sum8#,+ Sum9#,+ Sum10#,+ Sum11#,+ Sum12#,+ Sum13#,+ Sum14#,+ Sum15#,+ Sum16#,+ Sum17#,+ Sum18#,+ Sum19#,+ Sum20#,+ Sum21#,+ Sum22#,+ Sum23#,+ Sum24#,+ Sum25#,+ Sum26#,+ Sum27#,+ Sum28#,+ Sum29#,+ Sum30#,+ Sum31#,+ Sum32#,+ Sum33#,+ Sum34#,+ Sum35#,+ Sum36#,+ Sum37#,+ Sum38#,+ Sum39#,+ Sum40#,+ Sum41#,+ Sum42#,+ Sum43#,+ Sum44#,+ Sum45#,+ Sum46#,+ Sum47#,+ Sum48#,+ Sum49#,+ Sum50#,+ Sum51#,+ Sum52#,+ Sum53#,+ Sum54#,+ Sum55#,+ Sum56#,+ Sum57#,+ Sum58#,+ Sum59#,+ Sum60#,+ Sum61#,+ Sum62#,+ Sum63#,++ ) where++import GHC.Prim++infixr 5 :++{- *********************************************************************+* *+ Functions+* *+********************************************************************* -}++infixr -1 ->+{-+Note [Fixity of (->)]+~~~~~~~~~~~~~~~~~~~~~+This declaration is important for :info (->) command (issue #10145)+1) The parser parses -> as if it had lower fixity than 0,+ so we conventionally use -1 (issue #15235).+2) Fixities outside the 0-9 range are exceptionally allowed+ for (->) (see checkPrecP in RdrHsSyn)+3) The negative fixity -1 must be parsed as a single token,+ hence this module requires NegativeLiterals.+-}++-- | The regular function type+type (->) = FUN 'Many+-- See Note [Linear types] in Multiplicity++{- *********************************************************************+* *+ Kinds+* *+********************************************************************* -}++++-- | The runtime representation of lifted types.+type LiftedRep = 'BoxedRep 'Lifted++-- | The runtime representation of unlifted types.+type UnliftedRep = 'BoxedRep 'Unlifted++-- | The runtime representation of a zero-width tuple,+-- represented by no bits at all+type ZeroBitRep = 'TupleRep '[]++-------------------------+-- | The kind of lifted constraints+type Constraint = CONSTRAINT LiftedRep++-- | The kind of types with lifted values. For example @Int :: Type@.+type Type = TYPE LiftedRep++-- | The kind of boxed, unlifted values, for example @Array#@ or a user-defined+-- unlifted data type, using @-XUnliftedDataTypes@.+type UnliftedType = TYPE UnliftedRep++-- | The kind of the empty unboxed tuple type (# #)+type ZeroBitType = TYPE ZeroBitRep++-------------------------+data Multiplicity = Many | One++type family MultMul (a :: Multiplicity) (b :: Multiplicity) :: Multiplicity where+ MultMul 'One x = x+ MultMul x 'One = x+ MultMul 'Many x = 'Many+ MultMul x 'Many = 'Many++{- *********************************************************************+* *+ Symbol+* *+********************************************************************* -}++-- | (Kind) This is the kind of type-level symbols.+data Symbol++-- Symbol is declared here because class IP needs it++{- *********************************************************************+* *+ Any+* *+********************************************************************* -}++-- | The type constructor @Any :: forall k. k@ is a type to which you can unsafely coerce any type, and back.+--+-- For @unsafeCoerce@ this means for all lifted types @t@ that+-- @unsafeCoerce (unsafeCoerce x :: Any) :: t@ is equivalent to @x@ and safe.+--+-- The same is true for *all* types when using+-- @+-- unsafeCoerce# :: forall (r1 :: RuntimeRep) (r2 :: RuntimeRep)+-- (a :: TYPE r1) (b :: TYPE r2).+-- a -> b+-- @+-- but /only/ if you instantiate @r1@ and @r2@ to the /same/ runtime representation.+-- For example using @(unsafeCoerce# :: forall (a :: TYPE IntRep) (b :: TYPE IntRep). a -> b) x@+-- is fine, but @(unsafeCoerce# :: forall (a :: TYPE IntRep) (b :: TYPE FloatRep). a -> b)@+-- will likely cause seg-faults or worse.+-- For this resason, users should always prefer unsafeCoerce over unsafeCoerce# when possible.+--+-- Here are some more examples:+-- @+-- bad_a1 :: Any @(TYPE 'IntRep)+-- bad_a1 = unsafeCoerce# True+--+-- bad_a2 :: Any @(TYPE ('BoxedRep 'UnliftedRep))+-- bad_a2 = unsafeCoerce# True+-- @+-- Here @bad_a1@ is bad because we started with @True :: (Bool :: Type)@, represented by a boxed heap pointer,+-- and coerced it to @a1 :: Any @(TYPE 'IntRep)@, whose representation is a non-pointer integer.+-- That's why we had to use `unsafeCoerce#`; it is really unsafe because it can change representations.+-- Similarly @bad_a2@ is bad because although both @True@ and @bad_a2@ are represented by a heap pointer,+-- @True@ is lifted but @bad_a2@ is not; bugs here may be rather subtle.+--+-- If you must use unsafeCoerce# to cast to `Any`, type annotations are recommended+-- to make sure that @Any@ has the correct kind. As casting between different runtimereps is+-- unsound. For example to cast a @ByteArray#@ to @Any@ you might use:+-- @+-- unsafeCoerce# b :: (Any :: TYPE ('BoxedRep 'Unlifted))+-- @+type family Any :: k where { }+-- See Note [Any types] in GHC.Builtin.Types. Also, for a bit of history on Any see+-- #10886. Note that this must be a *closed* type family: we need to ensure+-- that this can't reduce to a `data` type for the results discussed in+-- Note [Any types].++{- *********************************************************************+* *+ Lists++ NB: lists are built-in syntax, and hence not explicitly exported+* *+********************************************************************* -}++-- | The builtin linked list type.+--+-- In Haskell, lists are one of the most important data types as they are+-- often used analogous to loops in imperative programming languages.+-- These lists are singly linked, which makes them unsuited for operations+-- that require \(\mathcal{O}(1)\) access. Instead, they are intended to+-- be traversed.+--+-- You can use @List a@ or @[a]@ in type signatures:+--+-- > length :: [a] -> Int+--+-- or+--+-- > length :: List a -> Int+--+-- They are fully equivalent, and @List a@ will be normalised to @[a]@.+--+-- ==== Usage+--+-- Lists are constructed recursively using the right-associative constructor operator (or /cons/)+-- @(:) :: a -> [a] -> [a]@, which prepends an element to a list,+-- and the empty list @[]@.+--+-- @+-- (1 : 2 : 3 : []) == (1 : (2 : (3 : []))) == [1, 2, 3]+-- @+--+-- Lists can also be constructed using list literals+-- of the form @[x_1, x_2, ..., x_n]@+-- which are syntactic sugar and, unless @-XOverloadedLists@ is enabled,+-- are translated into uses of @(:)@ and @[]@+--+-- 'Data.String.String' literals, like @"I 💜 hs"@, are translated into+-- Lists of characters, @[\'I\', \' \', \'💜\', \' \', \'h\', \'s\']@.+--+-- ==== __Implementation__+--+-- Internally and in memory, all the above are represented like this,+-- with arrows being pointers to locations in memory.+--+-- > ╭───┬───┬──╮ ╭───┬───┬──╮ ╭───┬───┬──╮ ╭────╮+-- > │(:)│ │ ─┼──>│(:)│ │ ─┼──>│(:)│ │ ─┼──>│ [] │+-- > ╰───┴─┼─┴──╯ ╰───┴─┼─┴──╯ ╰───┴─┼─┴──╯ ╰────╯+-- > v v v+-- > 1 2 3+--+-- ==== __Examples__+--+-- @+-- >>> [\'H\', \'a\', \'s\', \'k\', \'e\', \'l\', \'l\']+-- \"Haskell\"+-- @+--+-- @+-- >>> 1 : [4, 1, 5, 9]+-- [1,4,1,5,9]+-- @+--+-- @+-- >>> [] : [] : []+-- [[],[]]+-- @+--+-- @since 0.10.0+--+data List a = [] | a : List a+++{- *********************************************************************+* *+ Ordering+* *+********************************************************************* -}++data Ordering = LT | EQ | GT+++{- *********************************************************************+* *+ Int, Char, Word, Float, Double+* *+********************************************************************* -}++{- | The character type 'Char' represents Unicode codespace+and its elements are code points as in definitions+[D9 and D10 of the Unicode Standard](https://www.unicode.org/versions/Unicode15.0.0/ch03.pdf#G2212).++Character literals in Haskell are single-quoted: @\'Q\'@, @\'Я\'@ or @\'Ω\'@.+To represent a single quote itself use @\'\\''@, and to represent a backslash+use @\'\\\\\'@. The full grammar can be found in the section 2.6 of the+[Haskell 2010 Language Report](https://www.haskell.org/definition/haskell2010.pdf#section.2.6).++To specify a character by its code point one can use decimal, hexadecimal+or octal notation: @\'\\65\'@, @\'\\x41\'@ and @\'\\o101\'@ are all alternative forms+of @\'A\'@. The largest code point is @\'\\x10ffff\'@.++There is a special escape syntax for ASCII control characters:+++-------------+-------------------+---------------------------++| Escape | Alternatives | Meaning |++=============+===================+===========================++| @'\\NUL'@ | @'\\0'@ | null character |++-------------+-------------------+---------------------------++| @'\\SOH'@ | @'\\1'@ | start of heading |++-------------+-------------------+---------------------------++| @'\\STX'@ | @'\\2'@ | start of text |++-------------+-------------------+---------------------------++| @'\\ETX'@ | @'\\3'@ | end of text |++-------------+-------------------+---------------------------++| @'\\EOT'@ | @'\\4'@ | end of transmission |++-------------+-------------------+---------------------------++| @'\\ENQ'@ | @'\\5'@ | enquiry |++-------------+-------------------+---------------------------++| @'\\ACK'@ | @'\\6'@ | acknowledge |++-------------+-------------------+---------------------------++| @'\\BEL'@ | @'\\7'@, @'\\a'@ | bell (alert) |++-------------+-------------------+---------------------------++| @'\\BS'@ | @'\\8'@, @'\\b'@ | backspace |++-------------+-------------------+---------------------------++| @'\\HT'@ | @'\\9'@, @'\\t'@ | horizontal tab |++-------------+-------------------+---------------------------++| @'\\LF'@ | @'\\10'@, @'\\n'@ | line feed (new line) |++-------------+-------------------+---------------------------++| @'\\VT'@ | @'\\11'@, @'\\v'@ | vertical tab |++-------------+-------------------+---------------------------++| @'\\FF'@ | @'\\12'@, @'\\f'@ | form feed |++-------------+-------------------+---------------------------++| @'\\CR'@ | @'\\13'@, @'\\r'@ | carriage return |++-------------+-------------------+---------------------------++| @'\\SO'@ | @'\\14'@ | shift out |++-------------+-------------------+---------------------------++| @'\\SI'@ | @'\\15'@ | shift in |++-------------+-------------------+---------------------------++| @'\\DLE'@ | @'\\16'@ | data link escape |++-------------+-------------------+---------------------------++| @'\\DC1'@ | @'\\17'@ | device control 1 |++-------------+-------------------+---------------------------++| @'\\DC2'@ | @'\\18'@ | device control 2 |++-------------+-------------------+---------------------------++| @'\\DC3'@ | @'\\19'@ | device control 3 |++-------------+-------------------+---------------------------++| @'\\DC4'@ | @'\\20'@ | device control 4 |++-------------+-------------------+---------------------------++| @'\\NAK'@ | @'\\21'@ | negative acknowledge |++-------------+-------------------+---------------------------++| @'\\SYN'@ | @'\\22'@ | synchronous idle |++-------------+-------------------+---------------------------++| @'\\ETB'@ | @'\\23'@ | end of transmission block |++-------------+-------------------+---------------------------++| @'\\CAN'@ | @'\\24'@ | cancel |++-------------+-------------------+---------------------------++| @'\\EM'@ | @'\\25'@ | end of medium |++-------------+-------------------+---------------------------++| @'\\SUB'@ | @'\\26'@ | substitute |++-------------+-------------------+---------------------------++| @'\\ESC'@ | @'\\27'@ | escape |++-------------+-------------------+---------------------------++| @'\\FS'@ | @'\\28'@ | file separator |++-------------+-------------------+---------------------------++| @'\\GS'@ | @'\\29'@ | group separator |++-------------+-------------------+---------------------------++| @'\\RS'@ | @'\\30'@ | record separator |++-------------+-------------------+---------------------------++| @'\\US'@ | @'\\31'@ | unit separator |++-------------+-------------------+---------------------------++| @'\\SP'@ | @'\\32'@, @' '@ | space |++-------------+-------------------+---------------------------++| @'\\DEL'@ | @'\\127'@ | delete |++-------------+-------------------+---------------------------+++[Data.Char](https://hackage.haskell.org/package/base/docs/Data-Char.html)+provides utilities to work with 'Char'.++-}+data {-# CTYPE "HsChar" #-} Char = C# 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 {-# CTYPE "HsInt" #-} Int = I# Int#++-- |A 'Word' is an unsigned integral type, with the same size as 'Int'.+data {-# CTYPE "HsWord" #-} Word = W# Word#++-- | 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 {-# CTYPE "HsFloat" #-} Float = F# 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 {-# CTYPE "HsDouble" #-} Double = D# Double#+++{- *********************************************************************+* *+ IO+* *+********************************************************************* -}++{- |+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 'Prelude.>>' and 'Prelude.>>=' operations from the 'Prelude.Monad'+class.+-}+newtype IO a = IO (State# RealWorld -> (# State# RealWorld, a #))+++{- *********************************************************************+* *+ (~) and Coercible++* *+********************************************************************* -}++{-+Note [Kind-changing of (~) and Coercible]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+(~) and Coercible are tricky to define. To the user, they must appear as+constraints, but we cannot define them as such in Haskell. But we also cannot+just define them only in GHC.Prim (like (->)), because we need a real module+for them, e.g. to compile the constructor's info table.++Furthermore the type of MkCoercible cannot be written in Haskell+(no syntax for ~#R).++So we define them as regular data types in GHC.Types, and do magic in GHC.Builtin.Types,+inside GHC, to change the kind and type.+-}+++-- | Lifted, heterogeneous equality. By lifted, we mean that it+-- can be bogus (deferred type error). By heterogeneous, the two+-- types @a@ and @b@ might have different kinds. Because @~~@ can+-- appear unexpectedly in error messages to users who do not care+-- about the difference between heterogeneous equality @~~@ and+-- homogeneous equality @~@, this is printed as @~@ unless+-- @-fprint-equality-relations@ is set.+--+-- In @0.7.0@, the fixity was set to @infix 4@ to match the fixity of 'Data.Type.Equality.:~~:'.+class a ~~ b++ -- See also Note [The equality types story] in GHC.Builtin.Types.Prim++-- | Lifted, homogeneous equality. By lifted, we mean that it+-- can be bogus (deferred type error). By homogeneous, the two+-- types @a@ and @b@ must have the same kinds.++-- In @0.7.0@, the fixity was set to @infix 4@ to match the fixity of 'Data.Type.Equality.:~:'.+class a ~ b++infix 4 ~, ~~+ -- See also Note [The equality types story] in GHC.Builtin.Types.Prim++-- | @Coercible@ is a two-parameter class that has instances for types @a@ and @b@ if+-- the compiler can infer that they have the same representation. This class+-- does not have regular instances; instead they are created on-the-fly during+-- type-checking. Trying to manually declare an instance of @Coercible@+-- is an error.+--+-- Nevertheless one can pretend that the following three kinds of instances+-- exist. First, as a trivial base-case:+--+-- @instance Coercible a a@+--+-- Furthermore, for every type constructor there is+-- an instance that allows to coerce under the type constructor. For+-- example, let @D@ be a prototypical type constructor (@data@ or+-- @newtype@) with three type arguments, which have roles @nominal@,+-- @representational@ resp. @phantom@. Then there is an instance of+-- the form+--+-- @instance Coercible b b\' => Coercible (D a b c) (D a b\' c\')@+--+-- Note that the @nominal@ type arguments are equal, the+-- @representational@ type arguments can differ, but need to have a+-- @Coercible@ instance themself, and the @phantom@ type arguments can be+-- changed arbitrarily.+--+-- The third kind of instance exists for every @newtype NT = MkNT T@ and+-- comes in two variants, namely+--+-- @instance Coercible a T => Coercible a NT@+--+-- @instance Coercible T b => Coercible NT b@+--+-- This instance is only usable if the constructor @MkNT@ is in scope.+--+-- If, as a library author of a type constructor like @Set a@, you+-- want to prevent a user of your module to write+-- @coerce :: Set T -> Set NT@,+-- you need to set the role of @Set@\'s type parameter to @nominal@,+-- by writing+--+-- @type role Set nominal@+--+-- For more details about this feature, please refer to+-- <http://research.microsoft.com/en-us/um/people/simonpj/papers/ext-f/coercible.pdf Safe Coercions>+-- by Joachim Breitner, Richard A. Eisenberg, Simon Peyton Jones and Stephanie Weirich.+--+-- @since 0.4.0+class Coercible (a :: k) (b :: k)+ -- See also Note [The equality types story] in GHC.Builtin.Types.Prim++{- *********************************************************************+* *+ Bool, and isTrue#+* *+********************************************************************* -}++data {-# CTYPE "HsBool" #-} Bool = False | True++{-# INLINE isTrue# #-}+-- | Alias for 'tagToEnum#'. Returns True if its parameter is 1# and False+-- if it is 0#.+isTrue# :: Int# -> Bool -- See Note [Optimizing isTrue#]+isTrue# x = tagToEnum# x++{- Note [Optimizing isTrue#]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~+Current definition of isTrue# is a temporary workaround. We would like to+have functions isTrue# and isFalse# defined like this:++ isTrue# :: Int# -> Bool+ isTrue# 1# = True+ isTrue# _ = False++ isFalse# :: Int# -> Bool+ isFalse# 0# = True+ isFalse# _ = False++These functions would allow us to safely check if a tag can represent True+or False. Using isTrue# and isFalse# as defined above will not introduce+additional case into the code. When we scrutinize return value of isTrue#+or isFalse#, either explicitly in a case expression or implicitly in a guard,+the result will always be a single case expression (given that optimizations+are turned on). This results from case-of-case transformation. Consider this+code (this is both valid Haskell and Core):++case isTrue# (a ># b) of+ True -> e1+ False -> e2++Inlining isTrue# gives:++case (case (a ># b) of { 1# -> True; _ -> False } ) of+ True -> e1+ False -> e2++Case-of-case transforms that to:++case (a ># b) of+ 1# -> case True of+ True -> e1+ False -> e2+ _ -> case False of+ True -> e1+ False -> e2++Which is then simplified by case-of-known-constructor:++case (a ># b) of+ 1# -> e1+ _ -> e2++While we get good Core here, the code generator will generate very bad Cmm+if e1 or e2 do allocation. It will push heap checks into case alternatives+which results in about 2.5% increase in code size. Until this is improved we+just make isTrue# an alias to tagToEnum#. This is a temporary solution (if+you're reading this in 2023 then things went wrong). See #8326.+-}+++{- *********************************************************************+* *+ SPEC+* *+********************************************************************* -}++-- | 'SPEC' is used by GHC in the @SpecConstr@ pass in order to inform+-- the compiler when to be particularly aggressive. In particular, it+-- tells GHC to specialize regardless of size or the number of+-- specializations. However, not all loops fall into this category.+--+-- Libraries can specify this by using 'SPEC' data type to inform which+-- loops should be aggressively specialized. For example,+-- instead of+--+-- > loop x where loop arg = ...+--+-- write+--+-- > loop SPEC x where loop !_ arg = ...+--+-- There is no semantic difference between 'SPEC' and 'SPEC2',+-- we just need a type with two constructors lest it is optimised away+-- before @SpecConstr@.+--+-- This type is reexported from "GHC.Exts" since GHC 9.0 and @base-4.15@.+-- For compatibility with earlier releases import it from "GHC.Types"+-- in @ghc-prim@ package.+--+-- @since 0.3.1.0+--+data SPEC = SPEC | SPEC2+++{- *********************************************************************+* *+ Levity polymorphism+* *+********************************************************************* -}++-- | Whether a boxed type is lifted or unlifted.+data Levity = Lifted | Unlifted++-- | GHC maintains a property that the kind of all inhabited types+-- (as distinct from type constructors or type-level data) tells us+-- the runtime representation of values of that type. This datatype+-- encodes the choice of runtime value.+-- Note that 'TYPE' is parameterised by 'RuntimeRep'; this is precisely+-- what we mean by the fact that a type's kind encodes the runtime+-- representation.+--+-- For boxed values (that is, values that are represented by a pointer),+-- a further distinction is made, between lifted types (that contain ⊥),+-- and unlifted ones (that don't).+data RuntimeRep = VecRep VecCount VecElem -- ^ a SIMD vector type+ | TupleRep [RuntimeRep] -- ^ An unboxed tuple of the given reps+ | SumRep [RuntimeRep] -- ^ An unboxed sum of the given reps+ | BoxedRep Levity -- ^ boxed; represented by a pointer+ | IntRep -- ^ signed, word-sized value+ | Int8Rep -- ^ signed, 8-bit value+ | Int16Rep -- ^ signed, 16-bit value+ | Int32Rep -- ^ signed, 32-bit value+ | Int64Rep -- ^ signed, 64-bit value+ | WordRep -- ^ unsigned, word-sized value+ | Word8Rep -- ^ unsigned, 8-bit value+ | Word16Rep -- ^ unsigned, 16-bit value+ | Word32Rep -- ^ unsigned, 32-bit value+ | Word64Rep -- ^ unsigned, 64-bit value+ | AddrRep -- ^ A pointer, but /not/ to a Haskell value+ | FloatRep -- ^ a 32-bit floating point number+ | DoubleRep -- ^ a 64-bit floating point number++-- RuntimeRep is intimately tied to TyCon.RuntimeRep (in GHC proper). See+-- Note [RuntimeRep and PrimRep] in RepType.+-- See also Note [Wiring in RuntimeRep] in GHC.Builtin.Types+-- See also Note [TYPE and CONSTRAINT] in GHC.Builtin.Type.Prim++-- | Length of a SIMD vector type+data VecCount = Vec2+ | Vec4+ | Vec8+ | Vec16+ | Vec32+ | Vec64+-- Enum, Bounded instances in GHC.Enum++-- | Element of a SIMD vector type+data VecElem = Int8ElemRep+ | Int16ElemRep+ | Int32ElemRep+ | Int64ElemRep+ | Word8ElemRep+ | Word16ElemRep+ | Word32ElemRep+ | Word64ElemRep+ | FloatElemRep+ | DoubleElemRep+-- Enum, Bounded instances in GHC.Enum++{-# DEPRECATED Void# "Void# is now an alias for the unboxed tuple (# #)." #-}+type Void# = (# #)++{- *********************************************************************+* *+ Boxing data constructors+* *+********************************************************************* -}++-- These "boxing" data types allow us to wrap up a value of kind (TYPE rr)+-- in a box of kind Type, for each rr.+data LiftBox (a :: TYPE UnliftedRep) = MkLiftBox a++data IntBox (a :: TYPE IntRep) = MkIntBox a+data Int8Box (a :: TYPE Int8Rep) = MkInt8Box a+data Int16Box (a :: TYPE Int16Rep) = MkInt16Box a+data Int32Box (a :: TYPE Int32Rep) = MkInt32Box a+data Int64Box (a :: TYPE Int64Rep) = MkInt64Box a++data WordBox (a :: TYPE WordRep) = MkWordBox a+data Word8Box (a :: TYPE Word8Rep) = MkWord8Box a+data Word16Box (a :: TYPE Word16Rep) = MkWord16Box a+data Word32Box (a :: TYPE Word32Rep) = MkWord32Box a+data Word64Box (a :: TYPE Word64Rep) = MkWord64Box a++data FloatBox (a :: TYPE FloatRep) = MkFloatBox a+data DoubleBox (a :: TYPE DoubleRep) = MkDoubleBox a++-- | Data type `Dict` provides a simple way to wrap up a (lifted)+-- constraint as a type+data DictBox c where+ MkDictBox :: c => DictBox c+++{- *********************************************************************+* *+ Runtime representation of TyCon+* *+********************************************************************* -}++{- Note [Runtime representation of modules and tycons]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+We generate a binding for M.$modName and M.$tcT for every module M and+data type T. Things to think about++ - We want them to be economical on space; ideally pure data with no thunks.++ - We do this for every module (except this module GHC.Types), so we can't+ depend on anything else (eg string unpacking code)++That's why we have these terribly low-level representations. The TrName+type lets us use the TrNameS constructor when allocating static data;+but we also need TrNameD for the case where we are deserialising a TyCon+or Module (for example when deserialising a TypeRep), in which case we+can't conveniently come up with an Addr#.+-}++#include "MachDeps.h"++data Module = Module+ TrName -- ^ Package name+ TrName -- ^ Module name++data TrName+ = TrNameS Addr# -- ^ Static+ | TrNameD [Char] -- ^ Dynamic++-- | A de Bruijn index for a binder within a 'KindRep'.+type KindBndr = Int++-- | The representation produced by GHC for conjuring up the kind of a+-- 'Data.Typeable.TypeRep'.++-- See Note [Representing TyCon kinds: KindRep] in GHC.Tc.Instance.Typeable.+data KindRep = KindRepTyConApp TyCon [KindRep]+ | KindRepVar !KindBndr+ | KindRepApp KindRep KindRep+ | KindRepFun KindRep KindRep+ | KindRepTYPE !RuntimeRep+ | KindRepTypeLitS TypeLitSort Addr#+ | KindRepTypeLitD TypeLitSort [Char]++data TypeLitSort = TypeLitSymbol+ | TypeLitNat+ | TypeLitChar++-- Show instance for TyCon found in GHC.Show+data TyCon = TyCon Word64# -- ^ Fingerprint (high)+ Word64# -- ^ Fingerprint (low)+ Module -- ^ Module in which this is defined+ TrName -- ^ Type constructor name+ Int# -- ^ How many kind variables do we accept?+ KindRep -- ^ A representation of the type's kind++{- *********************************************************************+* *+ Unboxed tuples and sums+* *+********************************************************************* -}++type Unit# :: TYPE (TupleRep '[])+data Unit# = (# #)++type Solo# :: TYPE rep -> TYPE (TupleRep '[rep])+data Solo# a = MkSolo# a++type Tuple0# = Unit#+type Tuple1# = Solo#++type Tuple2# :: TYPE r1 -> TYPE r2 -> TYPE (TupleRep [r1, r2])+data Tuple2# a b =+ (# a,b #)+type Tuple3# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE (TupleRep [r1, r2, r3])+data Tuple3# a b c =+ (# a,b,c #)+type Tuple4# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE (TupleRep [r1, r2, r3, r4])+data Tuple4# a b c d =+ (# a,b,c,d #)+type Tuple5# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE (TupleRep [r1, r2, r3, r4, r5])+data Tuple5# a b c d e =+ (# a,b,c,d,e #)+type Tuple6# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6])+data Tuple6# a b c d e f =+ (# a,b,c,d,e,f #)+type Tuple7# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7])+data Tuple7# a b c d e f g =+ (# a,b,c,d,e,f,g #)+type Tuple8# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8])+data Tuple8# a b c d e f g h =+ (# a,b,c,d,e,f,g,h #)+type Tuple9# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9])+data Tuple9# a b c d e f g h i =+ (# a,b,c,d,e,f,g,h,i #)+type Tuple10# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10])+data Tuple10# a b c d e f g h i j =+ (# a,b,c,d,e,f,g,h,i,j #)+type Tuple11# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11])+data Tuple11# a b c d e f g h i j k =+ (# a,b,c,d,e,f,g,h,i,j,k #)+type Tuple12# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12])+data Tuple12# a b c d e f g h i j k l =+ (# a,b,c,d,e,f,g,h,i,j,k,l #)+type Tuple13# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13])+data Tuple13# 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 #)+type Tuple14# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14])+data Tuple14# 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 #)+type Tuple15# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15])+data Tuple15# 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 #)+type Tuple16# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16])+data Tuple16# 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 #)+type Tuple17# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17])+data Tuple17# 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 #)+type Tuple18# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18])+data Tuple18# 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 #)+type Tuple19# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19])+data Tuple19# 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 #)+type Tuple20# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20])+data Tuple20# 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 #)+type Tuple21# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21])+data Tuple21# 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 #)+type Tuple22# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22])+data Tuple22# 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 #)+type Tuple23# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23])+data Tuple23# 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 #)+type Tuple24# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24])+data Tuple24# 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 #)+type Tuple25# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25])+data Tuple25# 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 #)+type Tuple26# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26])+data Tuple26# 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 #)+type Tuple27# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27])+data Tuple27# 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 a1 =+ (# 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,a1 #)+type Tuple28# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28])+data Tuple28# 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 a1 b1 =+ (# 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,a1,b1 #)+type Tuple29# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29])+data Tuple29# 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 a1 b1 c1 =+ (# 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,a1,b1,c1 #)+type Tuple30# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30])+data Tuple30# 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 a1 b1 c1 d1 =+ (# 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,a1,b1,c1,d1 #)+type Tuple31# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31])+data Tuple31# 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 a1 b1 c1 d1 e1 =+ (# 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,a1,b1,c1,d1,e1 #)+type Tuple32# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32])+data Tuple32# 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 a1 b1 c1 d1 e1 f1 =+ (# 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,a1,b1,c1,d1,e1,f1 #)+type Tuple33# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33])+data Tuple33# 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 a1 b1 c1 d1 e1 f1 g1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1 #)+type Tuple34# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34])+data Tuple34# 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 a1 b1 c1 d1 e1 f1 g1 h1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1 #)+type Tuple35# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35])+data Tuple35# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1 #)+type Tuple36# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36])+data Tuple36# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1 #)+type Tuple37# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37])+data Tuple37# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1 #)+type Tuple38# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38])+data Tuple38# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1 #)+type Tuple39# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39])+data Tuple39# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1 #)+type Tuple40# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40])+data Tuple40# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1 #)+type Tuple41# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41])+data Tuple41# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1 #)+type Tuple42# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42])+data Tuple42# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1 #)+type Tuple43# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43])+data Tuple43# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1 #)+type Tuple44# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44])+data Tuple44# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1 #)+type Tuple45# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45])+data Tuple45# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1 #)+type Tuple46# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46])+data Tuple46# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1 #)+type Tuple47# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47])+data Tuple47# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1 #)+type Tuple48# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48])+data Tuple48# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1 #)+type Tuple49# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49])+data Tuple49# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1 #)+type Tuple50# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50])+data Tuple50# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1 #)+type Tuple51# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51])+data Tuple51# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1 #)+type Tuple52# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52])+data Tuple52# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1 #)+type Tuple53# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53])+data Tuple53# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2 #)+type Tuple54# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54])+data Tuple54# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2 #)+type Tuple55# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55])+data Tuple55# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2 #)+type Tuple56# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56])+data Tuple56# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2 #)+type Tuple57# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57])+data Tuple57# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2 #)+type Tuple58# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58])+data Tuple58# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2 #)+type Tuple59# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59])+data Tuple59# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2 #)+type Tuple60# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60])+data Tuple60# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2 #)+type Tuple61# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61])+data Tuple61# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2 #)+type Tuple62# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62])+data Tuple62# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2 #)+type Tuple63# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63])+data Tuple63# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2 #)+type Tuple64# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 ->+ TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 ->+ TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 ->+ TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 ->+ TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 ->+ TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 ->+ TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 -> TYPE r64 ->+ TYPE (TupleRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22,+ r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45,+ r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63, r64])+data Tuple64# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1+ r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 l2 =+ (# 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,a1,b1,c1,d1,e1,f1,g1,h1,i1,j1,k1,l1,m1,n1,o1,p1,q1,r1,s1,t1,+ u1,v1,w1,x1,y1,z1,a2,b2,c2,d2,e2,f2,g2,h2,i2,j2,k2,l2 #)++{-+Note [Unboxed sum with arity 64]+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~+While tuples are defined up to arity 64, sums can maximally have 63 alternatives.+This is due to the Unique layout for unboxed sums, which allots only six bits+for encoding the alternative.+-}++type Sum2# :: TYPE r1 -> TYPE r2 -> TYPE (SumRep [r1, r2])+data Sum2# a b =+ (# a | #)+ | (# | b #)++type Sum3# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE (SumRep [r1, r2, r3])+data Sum3# a b c =+ (# a | | #)+ | (# | b | #)+ | (# | | c #)++type Sum4# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE (SumRep [r1, r2, r3, r4])+data Sum4# a b c d =+ (# a | | | #)+ | (# | b | | #)+ | (# | | c | #)+ | (# | | | d #)++type Sum5# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE (SumRep [r1, r2, r3, r4, r5])+data Sum5# a b c d e =+ (# a | | | | #)+ | (# | b | | | #)+ | (# | | c | | #)+ | (# | | | d | #)+ | (# | | | | e #)++type Sum6# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6])+data Sum6# a b c d e f =+ (# a | | | | | #)+ | (# | b | | | | #)+ | (# | | c | | | #)+ | (# | | | d | | #)+ | (# | | | | e | #)+ | (# | | | | | f #)++type Sum7# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7])+data Sum7# a b c d e f g =+ (# a | | | | | | #)+ | (# | b | | | | | #)+ | (# | | c | | | | #)+ | (# | | | d | | | #)+ | (# | | | | e | | #)+ | (# | | | | | f | #)+ | (# | | | | | | g #)++type Sum8# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8])+data Sum8# a b c d e f g h =+ (# a | | | | | | | #)+ | (# | b | | | | | | #)+ | (# | | c | | | | | #)+ | (# | | | d | | | | #)+ | (# | | | | e | | | #)+ | (# | | | | | f | | #)+ | (# | | | | | | g | #)+ | (# | | | | | | | h #)++type Sum9# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9])+data Sum9# a b c d e f g h i =+ (# a | | | | | | | | #)+ | (# | b | | | | | | | #)+ | (# | | c | | | | | | #)+ | (# | | | d | | | | | #)+ | (# | | | | e | | | | #)+ | (# | | | | | f | | | #)+ | (# | | | | | | g | | #)+ | (# | | | | | | | h | #)+ | (# | | | | | | | | i #)++type Sum10# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10])+data Sum10# a b c d e f g h i j =+ (# a | | | | | | | | | #)+ | (# | b | | | | | | | | #)+ | (# | | c | | | | | | | #)+ | (# | | | d | | | | | | #)+ | (# | | | | e | | | | | #)+ | (# | | | | | f | | | | #)+ | (# | | | | | | g | | | #)+ | (# | | | | | | | h | | #)+ | (# | | | | | | | | i | #)+ | (# | | | | | | | | | j #)++type Sum11# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11])+data Sum11# a b c d e f g h i j k =+ (# a | | | | | | | | | | #)+ | (# | b | | | | | | | | | #)+ | (# | | c | | | | | | | | #)+ | (# | | | d | | | | | | | #)+ | (# | | | | e | | | | | | #)+ | (# | | | | | f | | | | | #)+ | (# | | | | | | g | | | | #)+ | (# | | | | | | | h | | | #)+ | (# | | | | | | | | i | | #)+ | (# | | | | | | | | | j | #)+ | (# | | | | | | | | | | k #)++type Sum12# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12])+data Sum12# a b c d e f g h i j k l =+ (# a | | | | | | | | | | | #)+ | (# | b | | | | | | | | | | #)+ | (# | | c | | | | | | | | | #)+ | (# | | | d | | | | | | | | #)+ | (# | | | | e | | | | | | | #)+ | (# | | | | | f | | | | | | #)+ | (# | | | | | | g | | | | | #)+ | (# | | | | | | | h | | | | #)+ | (# | | | | | | | | i | | | #)+ | (# | | | | | | | | | j | | #)+ | (# | | | | | | | | | | k | #)+ | (# | | | | | | | | | | | l #)++type Sum13# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13])+data Sum13# 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 #)++type Sum14# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14])+data Sum14# 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 #)++type Sum15# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15])+data Sum15# 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 #)++type Sum16# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16])+data Sum16# 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 #)++type Sum17# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17])+data Sum17# 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 #)++type Sum18# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18])+data Sum18# 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 #)++type Sum19# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19])+data Sum19# 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 #)++type Sum20# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20])+data Sum20# 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 #)++type Sum21# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21])+data Sum21# 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 #)++type Sum22# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22])+data Sum22# 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 #)++type Sum23# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23])+data Sum23# 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 #)++type Sum24# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24])+data Sum24# 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 #)++type Sum25# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25])+data Sum25# 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 #)++type Sum26# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26])+data Sum26# 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 #)++type Sum27# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27])+data Sum27# 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 a1 =+ (# 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 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 #)++type Sum28# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28])+data Sum28# 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 a1 b1 =+ (# 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 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 #)++type Sum29# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29])+data Sum29# 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 a1 b1 c1 =+ (# 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 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 #)++type Sum30# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30])+data Sum30# 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 a1 b1 c1 d1 =+ (# 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 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 #)++type Sum31# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31])+data Sum31# 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 a1 b1 c1 d1 e1 =+ (# 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 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 #)++type Sum32# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32])+data Sum32# 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 a1 b1 c1 d1 e1 f1 =+ (# 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 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 #)++type Sum33# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33])+data Sum33# 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 a1 b1 c1 d1 e1 f1 g1 =+ (# 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 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 #)++type Sum34# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34])+data Sum34# 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 a1 b1 c1 d1 e1 f1 g1 h1 =+ (# 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 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 #)++type Sum35# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35])+data Sum35# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 =+ (# 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 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 #)++type Sum36# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36])+data Sum36# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 =+ (# 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 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 #)++type Sum37# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37])+data Sum37# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 =+ (# 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 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 #)++type Sum38# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38])+data Sum38# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 =+ (# 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 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 #)++type Sum39# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39])+data Sum39# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 =+ (# 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 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 #)++type Sum40# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40])+data Sum40# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 =+ (# 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 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 #)++type Sum41# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41])+data Sum41# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 =+ (# 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 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 #)++type Sum42# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42])+data Sum42# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 =+ (# 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 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 #)++type Sum43# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43])+data Sum43# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 =+ (# 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 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 #)++type Sum44# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44])+data Sum44# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 =+ (# 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 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 #)++type Sum45# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45])+data Sum45# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 =+ (# 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 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 #)++type Sum46# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46])+data Sum46# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 #)++type Sum47# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47])+data Sum47# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 #)++type Sum48# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48])+data Sum48# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 #)++type Sum49# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49])+data Sum49# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 #)++type Sum50# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50])+data Sum50# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 #)++type Sum51# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51])+data Sum51# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 #)++type Sum52# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52])+data Sum52# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 #)++type Sum53# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53])+data Sum53# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 #)++type Sum54# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54])+data Sum54# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 #)++type Sum55# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55])+data Sum55# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 #)++type Sum56# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56])+data Sum56# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 #)++type Sum57# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57])+data Sum57# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 #)++type Sum58# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58])+data Sum58# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 #)++type Sum59# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59])+data Sum59# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 #)++type Sum60# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60])+data Sum60# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 #)++type Sum61# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61])+data Sum61# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 #)++type Sum62# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62])+data Sum62# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j2 #)++type Sum63# :: TYPE r1 -> TYPE r2 -> TYPE r3 -> TYPE r4 -> TYPE r5 -> TYPE r6 -> TYPE r7 -> TYPE r8 -> TYPE r9 -> TYPE r10 -> TYPE r11 -> TYPE r12 -> TYPE r13 -> TYPE r14 -> TYPE r15 -> TYPE r16 -> TYPE r17 -> TYPE r18 -> TYPE r19 -> TYPE r20 -> TYPE r21 -> TYPE r22 -> TYPE r23 -> TYPE r24 -> TYPE r25 -> TYPE r26 -> TYPE r27 -> TYPE r28 -> TYPE r29 -> TYPE r30 -> TYPE r31 -> TYPE r32 -> TYPE r33 -> TYPE r34 -> TYPE r35 -> TYPE r36 -> TYPE r37 -> TYPE r38 -> TYPE r39 -> TYPE r40 -> TYPE r41 -> TYPE r42 -> TYPE r43 -> TYPE r44 -> TYPE r45 -> TYPE r46 -> TYPE r47 -> TYPE r48 -> TYPE r49 -> TYPE r50 -> TYPE r51 -> TYPE r52 -> TYPE r53 -> TYPE r54 -> TYPE r55 -> TYPE r56 -> TYPE r57 -> TYPE r58 -> TYPE r59 -> TYPE r60 -> TYPE r61 -> TYPE r62 -> TYPE r63 -> TYPE (SumRep [r1, r2, r3, r4, r5, r6, r7, r8, r9, r10, r11, r12, r13, r14, r15, r16, r17, r18, r19, r20, r21, r22, r23, r24, r25, r26, r27, r28, r29, r30, r31, r32, r33, r34, r35, r36, r37, r38, r39, r40, r41, r42, r43, r44, r45, r46, r47, r48, r49, r50, r51, r52, r53, r54, r55, r56, r57, r58, r59, r60, r61, r62, r63])+data Sum63# 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 a1 b1 c1 d1 e1 f1 g1 h1 i1 j1 k1 l1 m1 n1 o1 p1 q1 r1 s1 t1 u1 v1 w1 x1 y1 z1 a2 b2 c2 d2 e2 f2 g2 h2 i2 j2 k2 =+ (# 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 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | a1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | b1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | c1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i1 | | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j1 | | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k1 | | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | l1 | | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | m1 | | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | n1 | | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | o1 | | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | p1 | | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | q1 | | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | r1 | | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | s1 | | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | t1 | | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | u1 | | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | v1 | | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | w1 | | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | x1 | | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | y1 | | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | z1 | | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | a2 | | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | b2 | | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | c2 | | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | d2 | | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | e2 | | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | f2 | | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | g2 | | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | h2 | | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | i2 | | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | j2 | #)+ | (# | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | k2 #)
cbits/atomic.c view
@@ -33,14 +33,12 @@ return __sync_fetch_and_add((volatile StgWord32 *) x, (StgWord32) val); } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomic_add64(StgWord x, StgWord64 val); StgWord64 hs_atomic_add64(StgWord x, StgWord64 val) { return __sync_fetch_and_add((volatile StgWord64 *) x, val); }-#endif // FetchSubByteArrayOp_Int @@ -65,14 +63,12 @@ return __sync_fetch_and_sub((volatile StgWord32 *) x, (StgWord32) val); } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomic_sub64(StgWord x, StgWord64 val); StgWord64 hs_atomic_sub64(StgWord x, StgWord64 val) { return __sync_fetch_and_sub((volatile StgWord64 *) x, val); }-#endif // FetchAndByteArrayOp_Int @@ -97,20 +93,17 @@ return __sync_fetch_and_and((volatile StgWord32 *) x, (StgWord32) val); } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomic_and64(StgWord x, StgWord64 val); StgWord64 hs_atomic_and64(StgWord x, StgWord64 val) { return __sync_fetch_and_and((volatile StgWord64 *) x, val); }-#endif // FetchNandByteArrayOp_Int // Note [__sync_fetch_and_nand usage] // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~-// // The __sync_fetch_and_nand builtin is a bit of a disaster. It was introduced // in GCC long ago with silly semantics. Specifically: //@@ -207,7 +200,6 @@ #endif } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomic_nand64(StgWord x, StgWord64 val); StgWord64 hs_atomic_nand64(StgWord x, StgWord64 val)@@ -218,7 +210,6 @@ CAS_NAND((volatile StgWord64 *) x, val); #endif }-#endif #pragma GCC diagnostic pop @@ -245,14 +236,12 @@ return __sync_fetch_and_or((volatile StgWord32 *) x, (StgWord32) val); } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomic_or64(StgWord x, StgWord64 val); StgWord64 hs_atomic_or64(StgWord x, StgWord64 val) { return __sync_fetch_and_or((volatile StgWord64 *) x, val); }-#endif // FetchXorByteArrayOp_Int @@ -277,14 +266,12 @@ return __sync_fetch_and_xor((volatile StgWord32 *) x, (StgWord32) val); } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomic_xor64(StgWord x, StgWord64 val); StgWord64 hs_atomic_xor64(StgWord x, StgWord64 val) { return __sync_fetch_and_xor((volatile StgWord64 *) x, val); }-#endif // CasByteArrayOp_Int @@ -292,31 +279,37 @@ StgWord hs_cmpxchg8(StgWord x, StgWord old, StgWord new) {- return __sync_val_compare_and_swap((volatile StgWord8 *) x, (StgWord8) old, (StgWord8) new);+ StgWord8 expected = (StgWord8) old;+ __atomic_compare_exchange_n((StgWord8 *) x, &expected, (StgWord8) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);+ return expected; } extern StgWord hs_cmpxchg16(StgWord x, StgWord old, StgWord new); StgWord hs_cmpxchg16(StgWord x, StgWord old, StgWord new) {- return __sync_val_compare_and_swap((volatile StgWord16 *) x, (StgWord16) old, (StgWord16) new);+ StgWord16 expected = (StgWord16) old;+ __atomic_compare_exchange_n((StgWord16 *) x, &expected, (StgWord16) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);+ return expected; } extern StgWord hs_cmpxchg32(StgWord x, StgWord old, StgWord new); StgWord hs_cmpxchg32(StgWord x, StgWord old, StgWord new) {- return __sync_val_compare_and_swap((volatile StgWord32 *) x, (StgWord32) old, (StgWord32) new);+ StgWord32 expected = (StgWord32) old;+ __atomic_compare_exchange_n((StgWord32 *) x, &expected, (StgWord32) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);+ return expected; } -#if WORD_SIZE_IN_BITS == 64-extern StgWord hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new);-StgWord+extern StgWord64 hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new);+StgWord64 hs_cmpxchg64(StgWord x, StgWord64 old, StgWord64 new) {- return __sync_val_compare_and_swap((volatile StgWord64 *) x, old, new);+ StgWord64 expected = (StgWord64) old;+ __atomic_compare_exchange_n((StgWord64 *) x, &expected, (StgWord64) new, false, __ATOMIC_SEQ_CST, __ATOMIC_SEQ_CST);+ return expected; }-#endif // Atomic exchange operations @@ -341,15 +334,13 @@ return (StgWord) __atomic_exchange_n((StgWord32 *) x, (StgWord32) val, __ATOMIC_SEQ_CST); } -#if WORD_SIZE_IN_BITS == 64 //GCC provides this even on 32bit, but StgWord is still 32 bits.-extern StgWord hs_xchg64(StgWord x, StgWord val);-StgWord-hs_xchg64(StgWord x, StgWord val)+extern StgWord64 hs_xchg64(StgWord x, StgWord64 val);+StgWord64+hs_xchg64(StgWord x, StgWord64 val) {- return (StgWord) __atomic_exchange_n((StgWord64 *) x, (StgWord64) val, __ATOMIC_SEQ_CST);+ return (StgWord64) __atomic_exchange_n((StgWord64 *) x, (StgWord64) val, __ATOMIC_SEQ_CST); }-#endif // AtomicReadByteArrayOp_Int // Implies a full memory barrier (see compiler/GHC/Builtin/primops.txt.pp)@@ -365,47 +356,29 @@ StgWord hs_atomicread8(StgWord x) {-#if HAVE_C11_ATOMICS return __atomic_load_n((StgWord8 *) x, __ATOMIC_SEQ_CST);-#else- return __sync_add_and_fetch((StgWord8 *) x, 0);-#endif } extern StgWord hs_atomicread16(StgWord x); StgWord hs_atomicread16(StgWord x) {-#if HAVE_C11_ATOMICS return __atomic_load_n((StgWord16 *) x, __ATOMIC_SEQ_CST);-#else- return __sync_add_and_fetch((StgWord16 *) x, 0);-#endif } extern StgWord hs_atomicread32(StgWord x); StgWord hs_atomicread32(StgWord x) {-#if HAVE_C11_ATOMICS return __atomic_load_n((StgWord32 *) x, __ATOMIC_SEQ_CST);-#else- return __sync_add_and_fetch((StgWord32 *) x, 0);-#endif } -#if WORD_SIZE_IN_BITS == 64 extern StgWord64 hs_atomicread64(StgWord x); StgWord64 hs_atomicread64(StgWord x) {-#if HAVE_C11_ATOMICS return __atomic_load_n((StgWord64 *) x, __ATOMIC_SEQ_CST);-#else- return __sync_add_and_fetch((StgWord64 *) x, 0);-#endif }-#endif // AtomicWriteByteArrayOp_Int // Implies a full memory barrier (see compiler/GHC/Builtin/primops.txt.pp)@@ -415,46 +388,28 @@ void hs_atomicwrite8(StgWord x, StgWord val) {-#if HAVE_C11_ATOMICS __atomic_store_n((StgWord8 *) x, (StgWord8) val, __ATOMIC_SEQ_CST);-#else- while (!__sync_bool_compare_and_swap((StgWord8 *) x, *(StgWord8 *) x, (StgWord8) val));-#endif } extern void hs_atomicwrite16(StgWord x, StgWord val); void hs_atomicwrite16(StgWord x, StgWord val) {-#if HAVE_C11_ATOMICS __atomic_store_n((StgWord16 *) x, (StgWord16) val, __ATOMIC_SEQ_CST);-#else- while (!__sync_bool_compare_and_swap((StgWord16 *) x, *(StgWord16 *) x, (StgWord16) val));-#endif } extern void hs_atomicwrite32(StgWord x, StgWord val); void hs_atomicwrite32(StgWord x, StgWord val) {-#if HAVE_C11_ATOMICS __atomic_store_n((StgWord32 *) x, (StgWord32) val, __ATOMIC_SEQ_CST);-#else- while (!__sync_bool_compare_and_swap((StgWord32 *) x, *(StgWord32 *) x, (StgWord32) val));-#endif } -#if WORD_SIZE_IN_BITS == 64 extern void hs_atomicwrite64(StgWord x, StgWord64 val); void hs_atomicwrite64(StgWord x, StgWord64 val) {-#if HAVE_C11_ATOMICS __atomic_store_n((StgWord64 *) x, (StgWord64) val, __ATOMIC_SEQ_CST);-#else- while (!__sync_bool_compare_and_swap((StgWord64 *) x, *(StgWord64 *) x, (StgWord64) val));-#endif }-#endif #endif
cbits/bitrev.c view
@@ -3,7 +3,6 @@ /* Note [Bit reversal primop] ~~~~~~~~~~~~~~~~~~~~~~~~~~- There are two main ways of reversing the bit order of a word: bit twiddling and using a lookup table. See [this excellent](https://stackoverflow.com/questions/746171/most-efficient-algorithm-for-bit-reversal-from-msb-lsb-to-lsb-msb-in-c this)
cbits/longlong.c view
@@ -79,9 +79,7 @@ HsInt64 hs_intToInt64 (HsInt i) {return (HsInt64) i;} HsInt hs_int64ToInt (HsInt64 i) {return (HsInt) i;}-HsWord64 hs_int64ToWord64 (HsInt64 i) {return (HsWord64) i;} HsWord64 hs_wordToWord64 (HsWord w) {return (HsWord64) w;} HsWord hs_word64ToWord (HsWord64 w) {return (HsWord) w;}-HsInt64 hs_word64ToInt64 (HsWord64 w) {return (HsInt64) w;} #endif /* SUPPORT_LONG_LONGS */
+ cbits/mulIntMayOflo.c view
@@ -0,0 +1,3 @@+#include "Rts.h"++W_ hs_mulIntMayOflo(W_ a, W_ b) { return mulIntMayOflo(a, b); }
changelog.md view
@@ -1,7 +1,379 @@-## 0.8.0+## 0.13.0 -- Shipped with GHC 9.2.1+- Shipped with GHC 9.12.1 +- Add primops that allow users to distinguish weakly pinned byte arrays from unpinned ones.++ isMutableByteArrayWeaklyPinned# :: MutableByteArray# s -> Int#+ isByteArrayWeaklyPinned# :: ByteArray# s -> Int#++## 0.12.0++- Shipped with GHC 9.10.1++- Add unaligned addr access primops. These primops will be emulated on platforms that don't support unaligned access.++ readWord8OffAddrAsChar# :: Addr# -> Int# -> State# s -> (# State# s, Char# #)+ readWord8OffAddrAsAddr# :: Addr# -> Int# -> State# s -> (# State# s, Addr# #)+ readWord8OffAddrAsFloat# :: Addr# -> Int# -> State# s -> (# State# s, Float# #)+ readWord8OffAddrAsDouble# :: Addr# -> Int# -> State# s -> (# State# s, Double# #)+ readWord8OffAddrAsStablePtr# :: Addr# -> Int# -> State# s -> (# State# s, StablePtr# #)+ readWord8OffAddrAsInt16# :: Addr# -> Int# -> State# s -> (# State# s, Int16# #)+ readWord8OffAddrAsInt32# :: Addr# -> Int# -> State# s -> (# State# s, Int32# #)+ readWord8OffAddrAsInt64# :: Addr# -> Int# -> State# s -> (# State# s, Int64# #)+ readWord8OffAddrAsInt# :: Addr# -> Int# -> State# s -> (# State# s, Int# #)++ readWord8OffAddrAsWord16# :: Addr# -> Int# -> State# s -> (# State# s, Word16# #)+ readWord8OffAddrAsWord32# :: Addr# -> Int# -> State# s -> (# State# s, Word32# #)+ readWord8OffAddrAsWord64# :: Addr# -> Int# -> State# s -> (# State# s, Word64# #)+ readWord8OffAddrAsWord# :: Addr# -> Int# -> State# s -> (# State# s, Word# #)++ indexWord8OffAddrAsChar# :: Addr# -> Int# -> Char#+ indexWord8OffAddrAsAddr# :: Addr# -> Int# -> Addr#+ indexWord8OffAddrAsFloat# :: Addr# -> Int# -> Float#+ indexWord8OffAddrAsDouble# :: Addr# -> Int# -> Double#+ indexWord8OffAddrAsStablePtr# :: Addr# -> Int# -> StablePtr#+ indexWord8OffAddrAsInt16# :: Addr# -> Int# -> Int16#+ indexWord8OffAddrAsInt32# :: Addr# -> Int# -> Int32#+ indexWord8OffAddrAsInt64# :: Addr# -> Int# -> Int64#+ indexWord8OffAddrAsInt# :: Addr# -> Int# -> Int#++ indexWord8OffAddrAsWord16# :: Addr# -> Int# -> Word16#+ indexWord8OffAddrAsWord32# :: Addr# -> Int# -> Word32#+ indexWord8OffAddrAsWord64# :: Addr# -> Int# -> Word64#+ indexWord8OffAddrAsWord# :: Addr# -> Int# -> Word#++ writeWord8OffAddrAsChar# :: Addr# -> Int# -> Char# -> State# s -> State# s+ writeWord8OffAddrAsAddr# :: Addr# -> Int# -> Addr# -> State# s -> State# s+ writeWord8OffAddrAsFloat# :: Addr# -> Int# -> Float# -> State# s -> State# s+ writeWord8OffAddrAsDouble# :: Addr# -> Int# -> Double# -> State# s -> State# s+ writeWord8OffAddrAsStablePtr# :: Addr# -> Int# -> StablePtr# -> State# s -> State# s++ writeWord8OffAddrAsInt16# :: Addr# -> Int# -> Int16# -> State# s -> State# s+ writeWord8OffAddrAsInt32# :: Addr# -> Int# -> Int32# -> State# s -> State# s+ writeWord8OffAddrAsInt64# :: Addr# -> Int# -> Int64# -> State# s -> State# s+ writeWord8OffAddrAsInt# :: Addr# -> Int# -> Int# -> State# s -> State# s++ writeWord8OffAddrAsWord16# :: Addr# -> Int# -> Word16# -> State# s -> State# s+ writeWord8OffAddrAsWord32# :: Addr# -> Int# -> Word32# -> State# s -> State# s+ writeWord8OffAddrAsWord64# :: Addr# -> Int# -> Word64# -> State# s -> State# s+ writeWord8OffAddrAsWord# :: Addr# -> Int# -> Word# -> State# s -> State# s++- The `unsafeThawByteArray#` primop was added, serving as a inverse to the existing+ `unsafeFreezeByteArray#` primop (see #22710).++- `dataToTag#` has been moved to `GHC.Magic` and made the sole method+ of a new class:++ ```haskell+ type DataToTag :: forall {lev :: Levity}. TYPE (BoxedRep lev) -> Constraint+ class DataToTag a where+ dataToTag# :: a -> Int#+ ```++ In particular, it is now applicable only at some (not all)+ lifted types. However, if `t` is an algebraic data type (i.e. `t`+ matches a `data` or `data instance` declaration) with all of its+ constructors in scope and the levity of `t` is statically known,+ then the constraint `DataToTag t` can always be solved.++- Renamed several built-in tycon syntaxes to avoid punning:++ - Unboxed tuple tycons are now `Tuple#<N>`+ - Unboxed sum tycons are now `Sum#<N>`+ - Constraint tuple classes are now `CTuple<N>`+ - Unit tycons are now `Unit#`, `CUnit`.+ - Solo tycons are now `Solo#`, `CSolo`.+ - `Tuple<N>` have been moved back to `GHC.Tuple`.++ See [https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0475-tuple-syntax.rst].++## 0.11.0++- Shipped with GHC 9.8.1++- Primitive pointer comparison functions are now levity-polymorphic, e.g.++ ```haskell+ sameArray# :: forall {l} (a :: TYPE (BoxedRep l)). Array# a -> Array# a -> Int#+ ```++ This change affects the following functions:+ - `sameArray#`, `sameMutableArray#`,+ - `sameSmallArray#`, `sameSmallMutableArray#`,+ - `sameMutVar#`, `sameTVar#`, `sameMVar#`+ - `sameIOPort#`, `eqStableName#`.++- `keepAlive#` and `touch#` are now polymorphic in their state token (#23163; [CLC#152](https://github.com/haskell/core-libraries-committee/issues/152))++- Several new primops were added:++ - `copyMutableByteArrayNonOverlapping#`+ - `copyAddrToAddr#`+ - `copyAddrToAddrNonOverlapping#`+ - `setAddrRange#`++- New primops for fused multiply-add operations. These primops combine a+ multiplication and an addition, compiling to a single instruction when+ the `-mfma` flag is enabled and the architecture supports it.++ The new primops are `fmaddFloat#, fmsubFloat#, fnmaddFloat#, fnmsubFloat# :: Float# -> Float# -> Float# -> Float#`+ and `fmaddDouble#, fmsubDouble#, fnmaddDouble#, fnmsubDouble# :: Double# -> Double# -> Double# -> Double#`.++ These implement the following operations, while performing one single+ rounding at the end, leading to a more accurate result:++ - `fmaddFloat# x y z`, `fmaddDouble# x y z` compute `x * y + z`.+ - `fmsubFloat# x y z`, `fmsubDouble# x y z` compute `x * y - z`.+ - `fnmaddFloat# x y z`, `fnmaddDouble# x y z` compute `- x * y + z`.+ - `fnmsubFloat# x y z`, `fnmsubDouble# x y z` compute `- x * y - z`.++ Warning: on unsupported architectures, the software emulation provided by+ the fallback to the C standard library is not guaranteed to be IEEE-compliant.++- `Unit`, `Tuple0`, `Tuple1`, `Tuple2`, `Tuple3` and so on (up to `Tuple64`)+ are now exported from `GHC.Tuple.Prim` and reexported from `GHC.Tuple`.+ GHC now uses these as the actual names for tuple data types. As a result,+ the "brackets with commas" syntax (e.g. `()`, `(,)`, etc.) now becomes just+ an alias to these names. This change may affect tools and libraries that+ rely on type names, such as `Generic` and Template Haskell.++## 0.10.0++- Shipped with GHC 9.6.1++- The `listThreads#` primop was added, allowing the user to enumerate all+ threads (running and blocked) in the program:+ ```haskell+ listThreads# :: State# RealWorld -> (# State# RealWorld, Array# ThreadId# #)+ ```++- The type of the `labelThread#` primop was changed from:+ ```haskell+ labelThread# :: ThreadId# -> Addr# -> State# RealWorld -> State# RealWorld+ ```+ to+ ```haskell+ labelThread# :: ThreadId# -> ByteArray# -> State# RealWorld -> State# RealWorld+ ```+ Where the `ByteArray#` must contain a UTF-8-encoded string.++- The `threadLabel#` primop was added, allowing the user to query the label of+ a given `ThreadId#`.++- `isByteArrayPinned#` now only considers an array pinned if it was explicitly pinned+ by the user. This is required to avoid ghc issue [#22255](https://gitlab.haskell.org/ghc/ghc/-/issues/22255)+ which showed that the old behaviour could cause segfaults when used in combination+ with compact regions.+ We are working on ways to allow users and library authors to get back the+ performance benefits of the old behaviour where possible.++- `List` is now exported from `GHC.Types`.++## 0.9.0 *August 2022*++- Shipped with GHC 9.4.1++- `magicDict` has been renamed to `withDict` and is now defined in+ `GHC.Magic.Dict` instead of `GHC.Prim`. `withDict` now has the type:++ ```haskell+ withDict :: forall {rr :: RuntimeRep} st dt (r :: TYPE rr). st -> (dt => r) -> r+ ```++ Unlike `magicDict`, `withDict` can be used without defining an+ intermediate data type. For example, the `withTypeable` function from the+ `Data.Typeable` module can now be defined as:++ ```haskell+ withTypeable :: forall k (a :: k) rep (r :: TYPE rep). ()+ => TypeRep a -> (Typeable a => r) -> r+ withTypeable rep k = withDict @(TypeRep a) @(Typeable a) rep k+ ```++ Note that the explicit type applications are required, as the call to+ `withDict` would be ambiguous otherwise.++- Primitive types and functions which handle boxed values are now levity-polymorphic,+ meaning that they now also work with unlifted boxed values (i.e. values whose type+ has kind `TYPE (BoxedRep Unlifted)`).++ The following type constructors are now levity-polymorphic:++ - `Array#`, `SmallArray#`, `Weak#`, `StablePtr#`, `StableName#`,++ - `MutableArray#`, `SmallMutableArray#`, `MutVar#`,+ `TVar#`, `MVar#`, `IOPort#`.++ For example, `Array#` used to have kind:++ ```haskell+ Type -> UnliftedType+ ```++ but it now has kind:++ ```haskell+ forall {l :: Levity}. TYPE (BoxedRep l) -> UnliftedType+ ```++ Similarly, `MutVar#` used to have kind:++ ```haskell+ Type -> Type -> UnliftedType+ ```++ but it now has kind:++ ```haskell+ forall {l :: Levity}. Type -> TYPE (BoxedRep l) -> UnliftedType+ ```++ This means that in `Array# a`, `MutableArray# s a`, `MutVar# s a`, ...,+ the element type `a`, must always be boxed, but it can now either be lifted+ or unlifted.+ In particular, arrays and mutable variables can now be used to store+ other arrays and mutable variables.++ All functions which use these updated primitive types are also levity-polymorphic:++ - all array operations (reading/writing/copying/...), for both arrays and small arrays,+ mutable and immutable:++ - `newArray#`, `readArray#`, `writeArray#`, `sizeofArray#`, `sizeofMutableArray#`, `indexArray#`,+ `unsafeFreezeArray#`, `unsafeThawArray#`, `copyArray#`, `copyMutableArray#`, `cloneArray#`,+ `cloneMutableArray#`, `freezeArray#`, `thawArray#`, `casArray#`,++ - `newSmallArray#`, `shrinkSmallMutableArray#`, `readSmallArray#`, `writeSmallArray#`, `sizeofSmallArray#`,+ `getSizeofSmallMutableArray#`, `indexSmallArray#`, `unsafeFreezeSmallArray#`,+ `unsafeThawSmallArray#`, `copySmallArray#`, `copySmallMutableArray#`, `cloneSmallArray#`,+ `cloneSmallMutableArray#`, `freezeSmallArray#`, `thawSmallArray#`, `casSmallArray#`,++ - `newMutVar#`, `readMutVar#`, `writeMutVar#`,`casMutVar#`,++ - operations on `MVar#` and `TVar#`:++ - `newTVar#`, `readTVar#`, `readTVarIO#`, `writeTVar#`,++ - `newMVar#`, `takeMVar#`, `tryTakeMVar#`, `putMVar#`,+ `tryPutMVar#`, `readMVar#`, `tryReadMVar#`,++ - `STM` operations `atomically#`, `retry#`, `catchRetry#` and `catchSTM#`.++ - `newIOPort#`, `readIOPort#`, `writeIOPort#`,++ - `mkWeak#`, `mkWeakNoFinalizer#`, `addCFinalizerToWeak#`, `deRefWeak#`, `finalizeWeak#`,++ - `makeStablePtr#`, `deRefStablePtr#`, `eqStablePtr#`, `makeStableName#`, `stableNameToInt#`,++ For example, the full type of `newMutVar#` is now:++ ```haskell+ newMutVar#+ :: forall {l :: Levity} s (a :: TYPE (BoxedRep l)).+ a -> State# s -> (# State# s, MVar# s a #)+ ```++ and the full type of `writeSmallArray#` is:++ ```haskell+ writeSmallArray#+ :: forall {l :: Levity} s (a :: TYPE ('BoxedRep l)).+ SmallMutableArray# s a -> Int# -> a -> State# s -> State# s+ ```++- `ArrayArray#` and `MutableArrayArray#` have been moved from `GHC.Prim` to `GHC.Exts`.+ They are deprecated, because their functionality is now subsumed by `Array#`+ and `MutableArray#`.++- `mkWeak#`, `mkWeakNoFinalizer#`, `touch#` and `keepAlive#` are now+ levity-polymorphic instead of representation-polymorphic. For instance:++ ```haskell+ mkWeakNoFinalizer#+ :: forall {l :: Levity} {k :: Levity}+ (a :: TYPE ('BoxedRep l))+ (b :: TYPE ('BoxedRep k)).+ a -> b -> State# RealWorld -> (# State# RealWorld, Weak# b #)+ ```++ That is, the type signature now quantifies over the `Levity` of `a`+ instead of its `RuntimeRep`. In addition, this variable is now inferred,+ instead of specified, meaning that it is no longer eligible for visible type application.+ Note that `b` is now also levity-polymorphic, due to the change outlined in the+ previous point.++- Primitive functions for throwing and catching exceptions are now more polymorphic+ than before. For example, `catch#` now has type:++ ```haskell+ catch#+ :: forall {r :: RuntimeRep} {l :: Levity}+ (a :: TYPE r)+ (b :: TYPE ('BoxedRep l)).+ ( State# RealWorld -> (# State# RealWorld, a #) )+ -> ( b -> State# RealWorld -> (# State# RealWorld, a #) )+ -> State# RealWorld -> (# State# RealWorld, a #)+ ```++ The following functions are concerned:++ - `catch#`,++ - `raise#`, `raiseIO#`,++ - `maskAsyncExceptions#`, `maskUninterruptible#`, `unmaskAsyncExceptions#`.++ Note in particular that `raise#` is now both representation-polymorphic+ (with an inferred `RuntimeRep` argument) and levity-polymorphic, with type:++ ```haskell+ raise# :: forall {l :: Levity} {r :: RuntimeRep}+ (a :: TYPE (BoxedRep l))+ (b :: TYPE r).+ a -> b+ ```++- ``fork#`` and ``forkOn#`` are now representation-polymorphic. For example, ``fork#``+ now has type: ::++ fork# :: forall {r :: RuntimeRep} (a :: TYPE r).+ (State# RealWorld -> (# State# RealWorld, a #))+ -> (State# RealWorld -> (# State# RealWorld, a #))++- `reallyUnsafePtrEquality#` has been made more general, as it is now+ both levity-polymorphic and heterogeneous:++ ```haskell+ reallyUnsafePtrEquality#+ :: forall {l :: Levity} {k :: Levity}+ (a :: TYPE (BoxedRep l))+ (b :: TYPE (BoxedRep k))+ . a -> b -> Int#+ ```++ This means that `reallyUnsafePtrEquality#` can be used on primitive arrays+ such as `Array#` and `ByteArray#`. It can also be used on values of+ different types, without needing to call `unsafeCoerce#`.++- The following functions have been moved from `GHC.Prim` to `GHC.Exts`:+ - `sameMutableArray#`, `sameSmallMutableArray#`, `sameMutableByteArray#`+ and `sameMutableArrayArray#`,+ - `sameMutVar#`, `sameTVar#` and`sameMVar#`,+ - `sameIOPort#`,+ - `eqStableName#`.++- The following functions have been added to `GHC.Exts`:++ ```haskell+ sameArray# :: Array# a -> Array# a -> Int#+ sameSmallArray# :: SmallArray# a -> SmallArray# a -> Int#+ sameByteArray# :: ByteArray# -> ByteArray# -> Int#+ sameArrayArray# :: ArrayArray# -> ArrayArray# -> Int#+ ```++## 0.8.0+ - Change array access primops to use type with size maxing the element size: - `index{Int,Word}<N>Array# :: ByteArray# -> Int# -> {Int,Word}<N>#`@@ -18,6 +390,17 @@ - `extend{Int,Word}<N>#` -> `extend<N>To{Int,Word}#` - `narrow{Int,Word}<N>#` -> `intTo{Int,Word}<N>#` +- Add primops for atomic compare and swap for sizes other that wordsize:++ casInt8Array# :: MutableByteArray# s -> Int# -> Int8# -> Int8# -> State# s -> (# State# s, Int8# #)+ casInt16Array# :: MutableByteArray# s -> Int# -> Int16# -> Int16# -> State# s -> (# State# s, Int16# #)+ casInt32Array# :: MutableByteArray# s -> Int# -> Int32# -> Int32# -> State# s -> (# State# s, Int32# #)+ casInt64Array# :: MutableByteArray# s -> Int# -> Int64# -> Int64# -> State# s -> (# State# s, Int64# #)+ atomicCasWord8Addr# :: Addr# -> Word8# -> Word8# -> State# s -> (# State# s, Word8# #)+ atomicCasWord16Addr# :: Addr# -> Word16# -> Word16# -> State# s -> (# State# s, Word16# #)+ atomicCasWord32Addr# :: Addr# -> Word32# -> Word32# -> State# s -> (# State# s, Word32# #)+ atomicCasWord64Addr# :: Addr# -> WORD64 -> WORD64 -> State# s -> (# State# s, WORD64 #)+ ## 0.7.0 - Shipped with GHC 9.0.1@@ -25,7 +408,7 @@ - Add known-key `cstringLength#` to `GHC.CString`. This is just the C function `strlen`, but a built-in rewrite rule allows GHC to compute the result at compile time when the argument is known.- + - In order to support unicode better the following functions in `GHC.CString` gained UTF8 counterparts: @@ -49,7 +432,7 @@ atomicCasAddrAddr# :: Addr# -> Addr# -> Addr# -> State# s -> (# State# s, Addr# #) atomicCasWordAddr# :: Addr# -> Word# -> Word# -> State# s -> (# State# s, Word# #) -- Add an explicit fixity for `(~)` and `(~~)`: +- Add an explicit fixity for `(~)` and `(~~)`: infix 4 ~, ~~ @@ -57,7 +440,7 @@ the soundness issues of the latter (see [#17760](https://gitlab.haskell.org/ghc/ghc/-/issues/17760)). -## 0.6.1 (edit as necessary)+## 0.6.1 - Shipped with GHC 8.10.1
ghc-prim.cabal view
@@ -1,6 +1,6 @@ cabal-version: 2.2 name: ghc-prim-version: 0.8.0+version: 0.13.0 -- NOTE: Don't forget to update ./changelog.md license: BSD-3-Clause license-file: LICENSE@@ -12,6 +12,11 @@ description: This package contains the primitive types and operations supplied by GHC. + It is an internal package, only for the use of GHC developers.+ GHC users should not use it! If you do use it then expect+ breaking changes at any time without warning. You should prefer+ to import @GHC.Exts@ from the @base@ package instead.+ extra-source-files: changelog.md source-repository head@@ -20,8 +25,11 @@ subdir: libraries/ghc-prim custom-setup- setup-depends: base >= 4 && < 5, Cabal >= 1.23+ setup-depends: base >= 4 && < 5, process, filepath, directory, Cabal >= 1.23 && < 3.9 +flag need-atomic+ default: False+ Library default-language: Haskell2010 other-extensions:@@ -44,9 +52,11 @@ GHC.Classes GHC.Debug GHC.Magic+ GHC.Magic.Dict GHC.Prim.Ext GHC.Prim.Panic GHC.Prim.Exception+ GHC.Prim.PtrEq GHC.PrimopWrappers GHC.Tuple GHC.Types@@ -58,33 +68,39 @@ if os(windows) -- Windows requires some extra libraries for linking because the RTS -- is no longer re-exporting them (see #11223)- -- msvcrt: standard C library. The RTS will automatically include this,- -- but is added for completeness.- -- mingwex: provides C99 compatibility. libm is a stub on MingW.+ -- ucrt: standard C library. The RTS will automatically include this,+ -- but is added for completeness.+ -- mingwex: provides GNU POSIX extensions that aren't provided by ucrt. -- mingw32: Unfortunately required because of a resource leak between -- mingwex and mingw32. the __math_err symbol is defined in -- mingw32 which is required by mingwex. -- user32: provides access to apis to modify user components (UI etc) -- on Windows. Required because of mingw32.- extra-libraries: user32, mingw32, mingwex+ extra-libraries: user32, mingw32, mingwex, ucrt if os(linux) -- we need libm, but for musl and other's we might need libc, as libm -- is just an empty shell. extra-libraries: c, m - c-sources:- cbits/atomic.c- cbits/bswap.c- cbits/bitrev.c- cbits/clz.c- cbits/ctz.c- cbits/debug.c- cbits/longlong.c- cbits/pdep.c- cbits/pext.c- cbits/popcnt.c- cbits/word2float.c+ if flag(need-atomic)+ -- for 64-bit atomic ops on armel (#20549)+ extra-libraries: atomic++ if !os(ghcjs)+ c-sources:+ cbits/atomic.c+ cbits/bswap.c+ cbits/bitrev.c+ cbits/clz.c+ cbits/ctz.c+ cbits/debug.c+ cbits/longlong.c+ cbits/mulIntMayOflo.c+ cbits/pdep.c+ cbits/pext.c+ cbits/popcnt.c+ cbits/word2float.c -- We need to set the unit ID to ghc-prim (without a version number) -- as it's magic.