-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Self-optimizing tuple types -- -- Self optimizing tuple types. -- -- Adaptive tuples are tuple types in which the number of elements is -- determined at run-time. These structures are designed to combine the -- space-efficiency of tuples with the size flexibility of lists. -- -- Adaptive tuples provide lazy and strict, unpacked data structures for -- all tuple sizes from 0 to 20 elements. Adaptive tuples of more than 20 -- elements are allowed, however they are stored in an ordinary list. @package adaptive-tuple @version 0.2.0 -- | Adaptive tuples with non-strict elements. It is usually not necessary -- to import this module unless you need to construct custom reification -- functions. module Data.AdaptiveTuple.Reps.Lazy data ATuple20 s[am5Q] a[am5R] ATuple20 :: a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> a[am5R] -> ATuple20 s[am5Q] a[am5R] data ATuple19 s[am5O] a[am5P] ATuple19 :: a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> a[am5P] -> ATuple19 s[am5O] a[am5P] data ATuple18 s[am5M] a[am5N] ATuple18 :: a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> a[am5N] -> ATuple18 s[am5M] a[am5N] data ATuple17 s[am5K] a[am5L] ATuple17 :: a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> a[am5L] -> ATuple17 s[am5K] a[am5L] data ATuple16 s[am5I] a[am5J] ATuple16 :: a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> a[am5J] -> ATuple16 s[am5I] a[am5J] data ATuple15 s[am5G] a[am5H] ATuple15 :: a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> a[am5H] -> ATuple15 s[am5G] a[am5H] data ATuple14 s[am5E] a[am5F] ATuple14 :: a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> a[am5F] -> ATuple14 s[am5E] a[am5F] data ATuple13 s[am5C] a[am5D] ATuple13 :: a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> a[am5D] -> ATuple13 s[am5C] a[am5D] data ATuple12 s[am5A] a[am5B] ATuple12 :: a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> a[am5B] -> ATuple12 s[am5A] a[am5B] data ATuple11 s[am5y] a[am5z] ATuple11 :: a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> a[am5z] -> ATuple11 s[am5y] a[am5z] data ATuple10 s[am5w] a[am5x] ATuple10 :: a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> a[am5x] -> ATuple10 s[am5w] a[am5x] data ATuple9 s[am5u] a[am5v] ATuple9 :: a[am5v] -> a[am5v] -> a[am5v] -> a[am5v] -> a[am5v] -> a[am5v] -> a[am5v] -> a[am5v] -> a[am5v] -> ATuple9 s[am5u] a[am5v] data ATuple8 s[am5s] a[am5t] ATuple8 :: a[am5t] -> a[am5t] -> a[am5t] -> a[am5t] -> a[am5t] -> a[am5t] -> a[am5t] -> a[am5t] -> ATuple8 s[am5s] a[am5t] data ATuple7 s[am5q] a[am5r] ATuple7 :: a[am5r] -> a[am5r] -> a[am5r] -> a[am5r] -> a[am5r] -> a[am5r] -> a[am5r] -> ATuple7 s[am5q] a[am5r] data ATuple6 s[am5o] a[am5p] ATuple6 :: a[am5p] -> a[am5p] -> a[am5p] -> a[am5p] -> a[am5p] -> a[am5p] -> ATuple6 s[am5o] a[am5p] data ATuple5 s[am5m] a[am5n] ATuple5 :: a[am5n] -> a[am5n] -> a[am5n] -> a[am5n] -> a[am5n] -> ATuple5 s[am5m] a[am5n] data ATuple4 s[am5k] a[am5l] ATuple4 :: a[am5l] -> a[am5l] -> a[am5l] -> a[am5l] -> ATuple4 s[am5k] a[am5l] data ATuple3 s[am5i] a[am5j] ATuple3 :: a[am5j] -> a[am5j] -> a[am5j] -> ATuple3 s[am5i] a[am5j] data ATuple2 s[am5g] a[am5h] ATuple2 :: a[am5h] -> a[am5h] -> ATuple2 s[am5g] a[am5h] data ATuple1 s[am5e] a[am5f] ATuple1 :: a[am5f] -> ATuple1 s[am5e] a[am5f] reifyTuple4 :: Int -> [el[asCi]] -> (forall c[asCk] s[asCl]. (AdaptiveTuple c[asCk] s[asCl], Nat s[asCl]) => c[asCk] s[asCl] el[asCi] -> r[asCj]) -> r[asCj] reifyTuple8 :: Int -> [el[asFB]] -> (forall c[asFD] s[asFE]. (AdaptiveTuple c[asFD] s[asFE], Nat s[asFE]) => c[asFD] s[asFE] el[asFB] -> r[asFC]) -> r[asFC] reifyTuple12 :: Int -> [el[asKE]] -> (forall c[asKG] s[asKH]. (AdaptiveTuple c[asKG] s[asKH], Nat s[asKH]) => c[asKG] s[asKH] el[asKE] -> r[asKF]) -> r[asKF] reifyTuple16 :: Int -> [el[asRr]] -> (forall c[asRt] s[asRu]. (AdaptiveTuple c[asRt] s[asRu], Nat s[asRu]) => c[asRt] s[asRu] el[asRr] -> r[asRs]) -> r[asRs] reifyTuple20 :: Int -> [el[asZY]] -> (forall c[at00] s[at01]. (AdaptiveTuple c[at00] s[at01], Nat s[at01]) => c[at00] s[at01] el[asZY] -> r[asZZ]) -> r[asZZ] instance AdaptiveTuple ATuple20 D20 instance Applicative (ATuple20 D20) instance Functor (ATuple20 D20) instance AdaptiveTuple ATuple19 D19 instance Applicative (ATuple19 D19) instance Functor (ATuple19 D19) instance AdaptiveTuple ATuple18 D18 instance Applicative (ATuple18 D18) instance Functor (ATuple18 D18) instance AdaptiveTuple ATuple17 D17 instance Applicative (ATuple17 D17) instance Functor (ATuple17 D17) instance AdaptiveTuple ATuple16 D16 instance Applicative (ATuple16 D16) instance Functor (ATuple16 D16) instance AdaptiveTuple ATuple15 D15 instance Applicative (ATuple15 D15) instance Functor (ATuple15 D15) instance AdaptiveTuple ATuple14 D14 instance Applicative (ATuple14 D14) instance Functor (ATuple14 D14) instance AdaptiveTuple ATuple13 D13 instance Applicative (ATuple13 D13) instance Functor (ATuple13 D13) instance AdaptiveTuple ATuple12 D12 instance Applicative (ATuple12 D12) instance Functor (ATuple12 D12) instance AdaptiveTuple ATuple11 D11 instance Applicative (ATuple11 D11) instance Functor (ATuple11 D11) instance AdaptiveTuple ATuple10 D10 instance Applicative (ATuple10 D10) instance Functor (ATuple10 D10) instance AdaptiveTuple ATuple9 D9 instance Applicative (ATuple9 D9) instance Functor (ATuple9 D9) instance AdaptiveTuple ATuple8 D8 instance Applicative (ATuple8 D8) instance Functor (ATuple8 D8) instance AdaptiveTuple ATuple7 D7 instance Applicative (ATuple7 D7) instance Functor (ATuple7 D7) instance AdaptiveTuple ATuple6 D6 instance Applicative (ATuple6 D6) instance Functor (ATuple6 D6) instance AdaptiveTuple ATuple5 D5 instance Applicative (ATuple5 D5) instance Functor (ATuple5 D5) instance AdaptiveTuple ATuple4 D4 instance Applicative (ATuple4 D4) instance Functor (ATuple4 D4) instance AdaptiveTuple ATuple3 D3 instance Applicative (ATuple3 D3) instance Functor (ATuple3 D3) instance AdaptiveTuple ATuple2 D2 instance Applicative (ATuple2 D2) instance Functor (ATuple2 D2) instance AdaptiveTuple ATuple1 D1 instance Applicative (ATuple1 D1) instance Functor (ATuple1 D1) instance Typeable2 ATuple20 instance Typeable2 ATuple19 instance Typeable2 ATuple18 instance Typeable2 ATuple17 instance Typeable2 ATuple16 instance Typeable2 ATuple15 instance Typeable2 ATuple14 instance Typeable2 ATuple13 instance Typeable2 ATuple12 instance Typeable2 ATuple11 instance Typeable2 ATuple10 instance Typeable2 ATuple9 instance Typeable2 ATuple8 instance Typeable2 ATuple7 instance Typeable2 ATuple6 instance Typeable2 ATuple5 instance Typeable2 ATuple4 instance Typeable2 ATuple3 instance Typeable2 ATuple2 instance Typeable2 ATuple1 instance (Show a[am5R]) => Show (ATuple20 s[am5Q] a[am5R]) instance (Eq a[am5R]) => Eq (ATuple20 s[am5Q] a[am5R]) instance (Data s[am5Q], Data a[am5R]) => Data (ATuple20 s[am5Q] a[am5R]) instance (Show a[am5P]) => Show (ATuple19 s[am5O] a[am5P]) instance (Eq a[am5P]) => Eq (ATuple19 s[am5O] a[am5P]) instance (Data s[am5O], Data a[am5P]) => Data (ATuple19 s[am5O] a[am5P]) instance (Show a[am5N]) => Show (ATuple18 s[am5M] a[am5N]) instance (Eq a[am5N]) => Eq (ATuple18 s[am5M] a[am5N]) instance (Data s[am5M], Data a[am5N]) => Data (ATuple18 s[am5M] a[am5N]) instance (Show a[am5L]) => Show (ATuple17 s[am5K] a[am5L]) instance (Eq a[am5L]) => Eq (ATuple17 s[am5K] a[am5L]) instance (Data s[am5K], Data a[am5L]) => Data (ATuple17 s[am5K] a[am5L]) instance (Show a[am5J]) => Show (ATuple16 s[am5I] a[am5J]) instance (Eq a[am5J]) => Eq (ATuple16 s[am5I] a[am5J]) instance (Data s[am5I], Data a[am5J]) => Data (ATuple16 s[am5I] a[am5J]) instance (Show a[am5H]) => Show (ATuple15 s[am5G] a[am5H]) instance (Eq a[am5H]) => Eq (ATuple15 s[am5G] a[am5H]) instance (Data s[am5G], Data a[am5H]) => Data (ATuple15 s[am5G] a[am5H]) instance (Show a[am5F]) => Show (ATuple14 s[am5E] a[am5F]) instance (Eq a[am5F]) => Eq (ATuple14 s[am5E] a[am5F]) instance (Data s[am5E], Data a[am5F]) => Data (ATuple14 s[am5E] a[am5F]) instance (Show a[am5D]) => Show (ATuple13 s[am5C] a[am5D]) instance (Eq a[am5D]) => Eq (ATuple13 s[am5C] a[am5D]) instance (Data s[am5C], Data a[am5D]) => Data (ATuple13 s[am5C] a[am5D]) instance (Show a[am5B]) => Show (ATuple12 s[am5A] a[am5B]) instance (Eq a[am5B]) => Eq (ATuple12 s[am5A] a[am5B]) instance (Data s[am5A], Data a[am5B]) => Data (ATuple12 s[am5A] a[am5B]) instance (Show a[am5z]) => Show (ATuple11 s[am5y] a[am5z]) instance (Eq a[am5z]) => Eq (ATuple11 s[am5y] a[am5z]) instance (Data s[am5y], Data a[am5z]) => Data (ATuple11 s[am5y] a[am5z]) instance (Show a[am5x]) => Show (ATuple10 s[am5w] a[am5x]) instance (Eq a[am5x]) => Eq (ATuple10 s[am5w] a[am5x]) instance (Data s[am5w], Data a[am5x]) => Data (ATuple10 s[am5w] a[am5x]) instance (Show a[am5v]) => Show (ATuple9 s[am5u] a[am5v]) instance (Eq a[am5v]) => Eq (ATuple9 s[am5u] a[am5v]) instance (Data s[am5u], Data a[am5v]) => Data (ATuple9 s[am5u] a[am5v]) instance (Show a[am5t]) => Show (ATuple8 s[am5s] a[am5t]) instance (Eq a[am5t]) => Eq (ATuple8 s[am5s] a[am5t]) instance (Data s[am5s], Data a[am5t]) => Data (ATuple8 s[am5s] a[am5t]) instance (Show a[am5r]) => Show (ATuple7 s[am5q] a[am5r]) instance (Eq a[am5r]) => Eq (ATuple7 s[am5q] a[am5r]) instance (Data s[am5q], Data a[am5r]) => Data (ATuple7 s[am5q] a[am5r]) instance (Show a[am5p]) => Show (ATuple6 s[am5o] a[am5p]) instance (Eq a[am5p]) => Eq (ATuple6 s[am5o] a[am5p]) instance (Data s[am5o], Data a[am5p]) => Data (ATuple6 s[am5o] a[am5p]) instance (Show a[am5n]) => Show (ATuple5 s[am5m] a[am5n]) instance (Eq a[am5n]) => Eq (ATuple5 s[am5m] a[am5n]) instance (Data s[am5m], Data a[am5n]) => Data (ATuple5 s[am5m] a[am5n]) instance (Show a[am5l]) => Show (ATuple4 s[am5k] a[am5l]) instance (Eq a[am5l]) => Eq (ATuple4 s[am5k] a[am5l]) instance (Data s[am5k], Data a[am5l]) => Data (ATuple4 s[am5k] a[am5l]) instance (Show a[am5j]) => Show (ATuple3 s[am5i] a[am5j]) instance (Eq a[am5j]) => Eq (ATuple3 s[am5i] a[am5j]) instance (Data s[am5i], Data a[am5j]) => Data (ATuple3 s[am5i] a[am5j]) instance (Show a[am5h]) => Show (ATuple2 s[am5g] a[am5h]) instance (Eq a[am5h]) => Eq (ATuple2 s[am5g] a[am5h]) instance (Data s[am5g], Data a[am5h]) => Data (ATuple2 s[am5g] a[am5h]) instance (Show a[am5f]) => Show (ATuple1 s[am5e] a[am5f]) instance (Eq a[am5f]) => Eq (ATuple1 s[am5e] a[am5f]) instance (Data s[am5e], Data a[am5f]) => Data (ATuple1 s[am5e] a[am5f]) -- | Adaptive Tuples with strict fields and unboxed elements. The -- equivalent of data ATuple1 s n = ATuple1 !n compiled with -- -funbox-strict-fields. It is usually not necessary to import -- this module except to make custom reification functions. module Data.AdaptiveTuple.Reps.Strict data ATuple20 s[a1bub] a[a1buc] ATuple20 :: !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> !a[a1buc] -> ATuple20 s[a1bub] a[a1buc] data ATuple19 s[a1bu9] a[a1bua] ATuple19 :: !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> !a[a1bua] -> ATuple19 s[a1bu9] a[a1bua] data ATuple18 s[a1bu7] a[a1bu8] ATuple18 :: !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> !a[a1bu8] -> ATuple18 s[a1bu7] a[a1bu8] data ATuple17 s[a1bu5] a[a1bu6] ATuple17 :: !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> !a[a1bu6] -> ATuple17 s[a1bu5] a[a1bu6] data ATuple16 s[a1bu3] a[a1bu4] ATuple16 :: !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> !a[a1bu4] -> ATuple16 s[a1bu3] a[a1bu4] data ATuple15 s[a1bu1] a[a1bu2] ATuple15 :: !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> !a[a1bu2] -> ATuple15 s[a1bu1] a[a1bu2] data ATuple14 s[a1btZ] a[a1bu0] ATuple14 :: !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> !a[a1bu0] -> ATuple14 s[a1btZ] a[a1bu0] data ATuple13 s[a1btX] a[a1btY] ATuple13 :: !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> !a[a1btY] -> ATuple13 s[a1btX] a[a1btY] data ATuple12 s[a1btV] a[a1btW] ATuple12 :: !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> !a[a1btW] -> ATuple12 s[a1btV] a[a1btW] data ATuple11 s[a1btT] a[a1btU] ATuple11 :: !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> !a[a1btU] -> ATuple11 s[a1btT] a[a1btU] data ATuple10 s[a1btR] a[a1btS] ATuple10 :: !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> !a[a1btS] -> ATuple10 s[a1btR] a[a1btS] data ATuple9 s[a1btP] a[a1btQ] ATuple9 :: !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> !a[a1btQ] -> ATuple9 s[a1btP] a[a1btQ] data ATuple8 s[a1btN] a[a1btO] ATuple8 :: !a[a1btO] -> !a[a1btO] -> !a[a1btO] -> !a[a1btO] -> !a[a1btO] -> !a[a1btO] -> !a[a1btO] -> !a[a1btO] -> ATuple8 s[a1btN] a[a1btO] data ATuple7 s[a1btL] a[a1btM] ATuple7 :: !a[a1btM] -> !a[a1btM] -> !a[a1btM] -> !a[a1btM] -> !a[a1btM] -> !a[a1btM] -> !a[a1btM] -> ATuple7 s[a1btL] a[a1btM] data ATuple6 s[a1btJ] a[a1btK] ATuple6 :: !a[a1btK] -> !a[a1btK] -> !a[a1btK] -> !a[a1btK] -> !a[a1btK] -> !a[a1btK] -> ATuple6 s[a1btJ] a[a1btK] data ATuple5 s[a1btH] a[a1btI] ATuple5 :: !a[a1btI] -> !a[a1btI] -> !a[a1btI] -> !a[a1btI] -> !a[a1btI] -> ATuple5 s[a1btH] a[a1btI] data ATuple4 s[a1btF] a[a1btG] ATuple4 :: !a[a1btG] -> !a[a1btG] -> !a[a1btG] -> !a[a1btG] -> ATuple4 s[a1btF] a[a1btG] data ATuple3 s[a1btD] a[a1btE] ATuple3 :: !a[a1btE] -> !a[a1btE] -> !a[a1btE] -> ATuple3 s[a1btD] a[a1btE] data ATuple2 s[a1btB] a[a1btC] ATuple2 :: !a[a1btC] -> !a[a1btC] -> ATuple2 s[a1btB] a[a1btC] data ATuple1 s[a1btz] a[a1btA] ATuple1 :: !a[a1btA] -> ATuple1 s[a1btz] a[a1btA] reifyTuple4 :: Int -> [el[a1i0D]] -> (forall c[a1i0F] s[a1i0G]. (AdaptiveTuple c[a1i0F] s[a1i0G], Nat s[a1i0G]) => c[a1i0F] s[a1i0G] el[a1i0D] -> r[a1i0E]) -> r[a1i0E] reifyTuple8 :: Int -> [el[a1i3W]] -> (forall c[a1i3Y] s[a1i3Z]. (AdaptiveTuple c[a1i3Y] s[a1i3Z], Nat s[a1i3Z]) => c[a1i3Y] s[a1i3Z] el[a1i3W] -> r[a1i3X]) -> r[a1i3X] reifyTuple12 :: Int -> [el[a1i8Z]] -> (forall c[a1i91] s[a1i92]. (AdaptiveTuple c[a1i91] s[a1i92], Nat s[a1i92]) => c[a1i91] s[a1i92] el[a1i8Z] -> r[a1i90]) -> r[a1i90] reifyTuple16 :: Int -> [el[a1ifM]] -> (forall c[a1ifO] s[a1ifP]. (AdaptiveTuple c[a1ifO] s[a1ifP], Nat s[a1ifP]) => c[a1ifO] s[a1ifP] el[a1ifM] -> r[a1ifN]) -> r[a1ifN] reifyTuple20 :: Int -> [el[a1ioj]] -> (forall c[a1iol] s[a1iom]. (AdaptiveTuple c[a1iol] s[a1iom], Nat s[a1iom]) => c[a1iol] s[a1iom] el[a1ioj] -> r[a1iok]) -> r[a1iok] instance AdaptiveTuple ATuple20 D20 instance Applicative (ATuple20 D20) instance Functor (ATuple20 D20) instance AdaptiveTuple ATuple19 D19 instance Applicative (ATuple19 D19) instance Functor (ATuple19 D19) instance AdaptiveTuple ATuple18 D18 instance Applicative (ATuple18 D18) instance Functor (ATuple18 D18) instance AdaptiveTuple ATuple17 D17 instance Applicative (ATuple17 D17) instance Functor (ATuple17 D17) instance AdaptiveTuple ATuple16 D16 instance Applicative (ATuple16 D16) instance Functor (ATuple16 D16) instance AdaptiveTuple ATuple15 D15 instance Applicative (ATuple15 D15) instance Functor (ATuple15 D15) instance AdaptiveTuple ATuple14 D14 instance Applicative (ATuple14 D14) instance Functor (ATuple14 D14) instance AdaptiveTuple ATuple13 D13 instance Applicative (ATuple13 D13) instance Functor (ATuple13 D13) instance AdaptiveTuple ATuple12 D12 instance Applicative (ATuple12 D12) instance Functor (ATuple12 D12) instance AdaptiveTuple ATuple11 D11 instance Applicative (ATuple11 D11) instance Functor (ATuple11 D11) instance AdaptiveTuple ATuple10 D10 instance Applicative (ATuple10 D10) instance Functor (ATuple10 D10) instance AdaptiveTuple ATuple9 D9 instance Applicative (ATuple9 D9) instance Functor (ATuple9 D9) instance AdaptiveTuple ATuple8 D8 instance Applicative (ATuple8 D8) instance Functor (ATuple8 D8) instance AdaptiveTuple ATuple7 D7 instance Applicative (ATuple7 D7) instance Functor (ATuple7 D7) instance AdaptiveTuple ATuple6 D6 instance Applicative (ATuple6 D6) instance Functor (ATuple6 D6) instance AdaptiveTuple ATuple5 D5 instance Applicative (ATuple5 D5) instance Functor (ATuple5 D5) instance AdaptiveTuple ATuple4 D4 instance Applicative (ATuple4 D4) instance Functor (ATuple4 D4) instance AdaptiveTuple ATuple3 D3 instance Applicative (ATuple3 D3) instance Functor (ATuple3 D3) instance AdaptiveTuple ATuple2 D2 instance Applicative (ATuple2 D2) instance Functor (ATuple2 D2) instance AdaptiveTuple ATuple1 D1 instance Applicative (ATuple1 D1) instance Functor (ATuple1 D1) instance Typeable2 ATuple20 instance Typeable2 ATuple19 instance Typeable2 ATuple18 instance Typeable2 ATuple17 instance Typeable2 ATuple16 instance Typeable2 ATuple15 instance Typeable2 ATuple14 instance Typeable2 ATuple13 instance Typeable2 ATuple12 instance Typeable2 ATuple11 instance Typeable2 ATuple10 instance Typeable2 ATuple9 instance Typeable2 ATuple8 instance Typeable2 ATuple7 instance Typeable2 ATuple6 instance Typeable2 ATuple5 instance Typeable2 ATuple4 instance Typeable2 ATuple3 instance Typeable2 ATuple2 instance Typeable2 ATuple1 instance (Show a[a1buc]) => Show (ATuple20 s[a1bub] a[a1buc]) instance (Eq a[a1buc]) => Eq (ATuple20 s[a1bub] a[a1buc]) instance (Data s[a1bub], Data a[a1buc]) => Data (ATuple20 s[a1bub] a[a1buc]) instance (Show a[a1bua]) => Show (ATuple19 s[a1bu9] a[a1bua]) instance (Eq a[a1bua]) => Eq (ATuple19 s[a1bu9] a[a1bua]) instance (Data s[a1bu9], Data a[a1bua]) => Data (ATuple19 s[a1bu9] a[a1bua]) instance (Show a[a1bu8]) => Show (ATuple18 s[a1bu7] a[a1bu8]) instance (Eq a[a1bu8]) => Eq (ATuple18 s[a1bu7] a[a1bu8]) instance (Data s[a1bu7], Data a[a1bu8]) => Data (ATuple18 s[a1bu7] a[a1bu8]) instance (Show a[a1bu6]) => Show (ATuple17 s[a1bu5] a[a1bu6]) instance (Eq a[a1bu6]) => Eq (ATuple17 s[a1bu5] a[a1bu6]) instance (Data s[a1bu5], Data a[a1bu6]) => Data (ATuple17 s[a1bu5] a[a1bu6]) instance (Show a[a1bu4]) => Show (ATuple16 s[a1bu3] a[a1bu4]) instance (Eq a[a1bu4]) => Eq (ATuple16 s[a1bu3] a[a1bu4]) instance (Data s[a1bu3], Data a[a1bu4]) => Data (ATuple16 s[a1bu3] a[a1bu4]) instance (Show a[a1bu2]) => Show (ATuple15 s[a1bu1] a[a1bu2]) instance (Eq a[a1bu2]) => Eq (ATuple15 s[a1bu1] a[a1bu2]) instance (Data s[a1bu1], Data a[a1bu2]) => Data (ATuple15 s[a1bu1] a[a1bu2]) instance (Show a[a1bu0]) => Show (ATuple14 s[a1btZ] a[a1bu0]) instance (Eq a[a1bu0]) => Eq (ATuple14 s[a1btZ] a[a1bu0]) instance (Data s[a1btZ], Data a[a1bu0]) => Data (ATuple14 s[a1btZ] a[a1bu0]) instance (Show a[a1btY]) => Show (ATuple13 s[a1btX] a[a1btY]) instance (Eq a[a1btY]) => Eq (ATuple13 s[a1btX] a[a1btY]) instance (Data s[a1btX], Data a[a1btY]) => Data (ATuple13 s[a1btX] a[a1btY]) instance (Show a[a1btW]) => Show (ATuple12 s[a1btV] a[a1btW]) instance (Eq a[a1btW]) => Eq (ATuple12 s[a1btV] a[a1btW]) instance (Data s[a1btV], Data a[a1btW]) => Data (ATuple12 s[a1btV] a[a1btW]) instance (Show a[a1btU]) => Show (ATuple11 s[a1btT] a[a1btU]) instance (Eq a[a1btU]) => Eq (ATuple11 s[a1btT] a[a1btU]) instance (Data s[a1btT], Data a[a1btU]) => Data (ATuple11 s[a1btT] a[a1btU]) instance (Show a[a1btS]) => Show (ATuple10 s[a1btR] a[a1btS]) instance (Eq a[a1btS]) => Eq (ATuple10 s[a1btR] a[a1btS]) instance (Data s[a1btR], Data a[a1btS]) => Data (ATuple10 s[a1btR] a[a1btS]) instance (Show a[a1btQ]) => Show (ATuple9 s[a1btP] a[a1btQ]) instance (Eq a[a1btQ]) => Eq (ATuple9 s[a1btP] a[a1btQ]) instance (Data s[a1btP], Data a[a1btQ]) => Data (ATuple9 s[a1btP] a[a1btQ]) instance (Show a[a1btO]) => Show (ATuple8 s[a1btN] a[a1btO]) instance (Eq a[a1btO]) => Eq (ATuple8 s[a1btN] a[a1btO]) instance (Data s[a1btN], Data a[a1btO]) => Data (ATuple8 s[a1btN] a[a1btO]) instance (Show a[a1btM]) => Show (ATuple7 s[a1btL] a[a1btM]) instance (Eq a[a1btM]) => Eq (ATuple7 s[a1btL] a[a1btM]) instance (Data s[a1btL], Data a[a1btM]) => Data (ATuple7 s[a1btL] a[a1btM]) instance (Show a[a1btK]) => Show (ATuple6 s[a1btJ] a[a1btK]) instance (Eq a[a1btK]) => Eq (ATuple6 s[a1btJ] a[a1btK]) instance (Data s[a1btJ], Data a[a1btK]) => Data (ATuple6 s[a1btJ] a[a1btK]) instance (Show a[a1btI]) => Show (ATuple5 s[a1btH] a[a1btI]) instance (Eq a[a1btI]) => Eq (ATuple5 s[a1btH] a[a1btI]) instance (Data s[a1btH], Data a[a1btI]) => Data (ATuple5 s[a1btH] a[a1btI]) instance (Show a[a1btG]) => Show (ATuple4 s[a1btF] a[a1btG]) instance (Eq a[a1btG]) => Eq (ATuple4 s[a1btF] a[a1btG]) instance (Data s[a1btF], Data a[a1btG]) => Data (ATuple4 s[a1btF] a[a1btG]) instance (Show a[a1btE]) => Show (ATuple3 s[a1btD] a[a1btE]) instance (Eq a[a1btE]) => Eq (ATuple3 s[a1btD] a[a1btE]) instance (Data s[a1btD], Data a[a1btE]) => Data (ATuple3 s[a1btD] a[a1btE]) instance (Show a[a1btC]) => Show (ATuple2 s[a1btB] a[a1btC]) instance (Eq a[a1btC]) => Eq (ATuple2 s[a1btB] a[a1btC]) instance (Data s[a1btB], Data a[a1btC]) => Data (ATuple2 s[a1btB] a[a1btC]) instance (Show a[a1btA]) => Show (ATuple1 s[a1btz] a[a1btA]) instance (Eq a[a1btA]) => Eq (ATuple1 s[a1btz] a[a1btA]) instance (Data s[a1btz], Data a[a1btA]) => Data (ATuple1 s[a1btz] a[a1btA]) -- | This module provides support for adaptive tuples. An -- AdaptiveTuple is a tuple type with the size chosen at run-time -- and minimal overhead. All elements must be of the same type. -- Calculations are generated by combining adaptive tuples, which are -- then given an initial input with the reifyTuple function or its -- strict variant. -- -- Example: suppose you have a list of numbers that is either a single -- list or multiple interleaved lists. You wish to determine the maximum -- value of the single list or maximums of all interleaved lists. -- --
--   -- |The second  argument is a dummy argument to fix the type of c s ()
--   -- so this function can be used directly with reifyTuple
--   deinterleave :: AdaptiveTuple c s => [Int] -> c s () -> [c s Int]
--   deinterleave [] _ = []
--   deinterleave xs n = let (h, rest) = splitAt (tupLength n) xs
--                       in toATuple h : deinterleave n rest
--   
--   maxVals :: AdaptiveTuple c s => [c s Int] -> c s Int
--   maxVals = foldl' (\a b -> max <$> a <*> b) (pure 0)
--   
--   runner :: Int -> [Int] -> [Int]
--   runner n xs = reifyStrictTuple n (repeat ())
--                   (fromATuple . maxVals . deinterleave xs)
--   
-- -- using AdaptiveTuple is similar to the ZipList applicative -- instance, except without the overhead. module Data.AdaptiveTuple -- | Adaptive tuples: unboxed tuples of varying size. s is a -- type-level indicator of the number of elements in the container. class (Nat s, Applicative (c s)) => AdaptiveTuple c s getIndex :: (AdaptiveTuple c s) => c s el -> Int -> el setIndex :: (AdaptiveTuple c s) => Int -> el -> c s el -> c s el mapIndex :: (AdaptiveTuple c s) => (el -> el) -> Int -> c s el -> c s el toATuple :: (AdaptiveTuple c s) => [el] -> c s el fromATuple :: (AdaptiveTuple c s) => c s el -> [el] tupLength :: (AdaptiveTuple c s) => c s el -> Int sequenceAT :: (AdaptiveTuple c s, Monad m) => c s (m el) -> m (c s el) data AdaptiveTupleException ATupleIndexOutOfBounds :: String -> AdaptiveTupleException ATupleInsufficientInput :: AdaptiveTupleException reifyTuple :: Int -> [el] -> (forall c s. (AdaptiveTuple c s, Nat s) => c s el -> r) -> r reifyStrictTuple :: Int -> [el] -> (forall c s. (AdaptiveTuple c s, Nat s) => c s el -> r) -> r -- | Lazily convert a list of AdaptiveTuples into an AdaptiveTuple of -- lists. invert :: (AdaptiveTuple c s) => [c s a] -> c s [a] -- | Map a 0-indexed function over an AdaptiveTuple mapIndexed :: (AdaptiveTuple c s) => (Int -> a -> b) -> c s a -> c s b