Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Tuple helpers
Synopsis
- uncurry3 :: (a -> b -> c -> r) -> (a, b, c) -> r
- uncurry4 :: (a -> b -> c -> d -> r) -> (a, b, c, d) -> r
- uncurry5 :: (a -> b -> c -> d -> e -> r) -> (a, b, c, d, e) -> r
- uncurry6 :: (a -> b -> c -> d -> e -> f -> r) -> (a, b, c, d, e, f) -> r
- uncurry7 :: (a -> b -> c -> d -> e -> f -> g -> r) -> (a, b, c, d, e, f, g) -> r
- take4 :: [a] -> (a, a, a, a)
- fromTuple4 :: (a, a, a, a) -> [a]
- module Data.Tuple
- data Solo a where
- type family Tuple xs = t | t -> xs where ...
- type family Tuple# xs = t | t -> xs where ...
- type family TypeReps xs where ...
- class ExtractTuple (n :: Nat) xs where
- class TupleCon xs where
- tupleHead :: forall xs. ExtractTuple 0 xs => Tuple xs -> Index 0 xs
- class TupleTail ts ts' | ts -> ts' where
- tupleTail :: ts -> ts'
- class TupleCons t ts ts' | t ts -> ts' where
- tupleCons :: t -> ts -> ts'
- class ReorderTuple t1 t2 where
- tupleReorder :: t1 -> t2
Documentation
fromTuple4 :: (a, a, a, a) -> [a] Source #
toList for quadruple
module Data.Tuple
Solo
is the canonical lifted 1-tuple, just like (,)
is the canonical
lifted 2-tuple (pair) and (,,)
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",
because it is defined as a datatype rather than a newtype. One situation
where this can be useful is when writing a function to extract a value from
a data structure. Suppose you write an implementation of arrays and offer
only this function to index into them:
index :: Array a -> Int -> a
Now imagine that someone wants to extract a value from an array and store it in a lazy-valued finite map/dictionary:
insert "hello" (arr index
12) m
This can actually lead to a space leak. The value is not actually extracted from the array until that value (now buried in a map) is forced. That means the entire array may be kept live by just that value! Often, the solution is to use a strict map, or to force the value before storing it, but for some purposes that's undesirable.
One common solution is to include an indexing function that can produce its
result in an arbitrary Applicative
context:
indexA :: Applicative f => Array a -> Int -> f a
When using indexA
in a pure context, Solo
serves as a handy
Applicative
functor to hold the result. You could write a non-leaky
version of the above example thus:
case arr indexA
12 of
Solo a -> insert "hello" a m
While such simple extraction functions are the most common uses for 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.
MkSolo a |
pattern Solo :: a -> (a) |
Instances
Foldable Solo | Since: base-4.15 |
Defined in Data.Foldable fold :: Monoid m => Solo m -> m # foldMap :: Monoid m => (a -> m) -> Solo a -> m # foldMap' :: Monoid m => (a -> m) -> Solo a -> m # foldr :: (a -> b -> b) -> b -> Solo a -> b # foldr' :: (a -> b -> b) -> b -> Solo a -> b # foldl :: (b -> a -> b) -> b -> Solo a -> b # foldl' :: (b -> a -> b) -> b -> Solo a -> b # foldr1 :: (a -> a -> a) -> Solo a -> a # foldl1 :: (a -> a -> a) -> Solo a -> a # elem :: Eq a => a -> Solo a -> Bool # maximum :: Ord a => Solo a -> a # | |
Eq1 Solo | Since: base-4.15 |
Ord1 Solo | Since: base-4.15 |
Defined in Data.Functor.Classes | |
Read1 Solo | Since: base-4.15 |
Defined in Data.Functor.Classes | |
Show1 Solo | Since: base-4.15 |
Traversable Solo | Since: base-4.15 |
Applicative Solo | Since: base-4.15 |
Functor Solo | Since: base-4.15 |
Monad Solo | Since: base-4.15 |
NFData1 Solo | Since: deepseq-1.4.6.0 |
Defined in Control.DeepSeq | |
Hashable1 Solo | |
Defined in Data.Hashable.Class | |
Generic1 Solo | |
TupleCons a (b) (a, b) Source # | |
Defined in Data.Variant.Tuple | |
Monoid a => Monoid (a) | Since: base-4.15 |
Semigroup a => Semigroup (a) | Since: base-4.15 |
Bounded a => Bounded (a) | |
Enum a => Enum (a) | |
Generic (a) | |
Read a => Read (a) | Since: base-4.15 |
Show a => Show (a) | Since: base-4.15 |
NFData a => NFData (a) | Since: deepseq-1.4.6.0 |
Defined in Control.DeepSeq | |
Eq a => Eq (a) | |
Ord a => Ord (a) | |
Hashable a => Hashable (a) | |
Defined in Data.Hashable.Class | |
ReorderTuple (a) (a) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a) -> (a) Source # | |
TupleTail (a, b) (b) Source # | |
Defined in Data.Variant.Tuple | |
type Rep1 Solo | Since: base-4.15 |
Defined in GHC.Generics | |
type Rep (a) | Since: base-4.15 |
Defined in GHC.Generics |
type family Tuple xs = t | t -> xs where ... Source #
Boxed tuple
TODO: put this family into GHC
Tuple '[] = () | |
Tuple '[a] = Solo a | |
Tuple '[a, b] = (a, b) | |
Tuple '[a, b, c] = (a, b, c) | |
Tuple '[a, b, c, d] = (a, b, c, d) | |
Tuple '[a, b, c, d, e] = (a, b, c, d, e) | |
Tuple '[a, b, c, d, e, f] = (a, b, c, d, e, f) | |
Tuple '[a, b, c, d, e, f, g] = (a, b, c, d, e, f, g) | |
Tuple '[a, b, c, d, e, f, g, h] = (a, b, c, d, e, f, g, h) | |
Tuple '[a, b, c, d, e, f, g, h, i] = (a, b, c, d, e, f, g, h, i) | |
Tuple '[a, b, c, d, e, f, g, h, i, j] = (a, b, c, d, e, f, g, h, i, j) | |
Tuple '[a, b, c, d, e, f, g, h, i, j, k] = (a, b, c, d, e, f, g, h, i, j, k) | |
Tuple '[a, b, c, d, e, f, g, h, i, j, k, l] = (a, b, c, d, e, f, g, h, i, j, k, l) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[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) | |
Tuple '[a, 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) | |
Tuple '[a, b, 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 family Tuple# xs = t | t -> xs where ... Source #
Unboxed tuple
TODO: put this family into GHC
Tuple# '[] = (# #) | |
Tuple# '[a] = (# a #) | |
Tuple# '[a, b] = (# a, b #) | |
Tuple# '[a, b, c] = (# a, b, c #) | |
Tuple# '[a, b, c, d] = (# a, b, c, d #) | |
Tuple# '[a, b, c, d, e] = (# a, b, c, d, e #) | |
Tuple# '[a, b, c, d, e, f] = (# a, b, c, d, e, f #) | |
Tuple# '[a, b, c, d, e, f, g] = (# a, b, c, d, e, f, g #) | |
Tuple# '[a, b, c, d, e, f, g, h] = (# a, b, c, d, e, f, g, h #) | |
Tuple# '[a, b, c, d, e, f, g, h, i] = (# a, b, c, d, e, f, g, h, i #) |
class ExtractTuple (n :: Nat) xs where Source #
Extract a tuple value statically
Instances
ExtractTuple 0 '[a] Source # | |
ExtractTuple 0 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 0 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 0 '[e0, e1, e2, e3, e4, e5] Source # | |
ExtractTuple 0 '[e0, e1, e2, e3, e4] Source # | |
ExtractTuple 0 '[e0, e1, e2, e3] Source # | |
ExtractTuple 0 '[e0, e1, e2] Source # | |
ExtractTuple 0 '[e0, e1] Source # | |
ExtractTuple 1 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 1 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 1 '[e0, e1, e2, e3, e4, e5] Source # | |
ExtractTuple 1 '[e0, e1, e2, e3, e4] Source # | |
ExtractTuple 1 '[e0, e1, e2, e3] Source # | |
ExtractTuple 1 '[e0, e1, e2] Source # | |
ExtractTuple 1 '[e0, e1] Source # | |
ExtractTuple 2 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 2 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 2 '[e0, e1, e2, e3, e4, e5] Source # | |
ExtractTuple 2 '[e0, e1, e2, e3, e4] Source # | |
ExtractTuple 2 '[e0, e1, e2, e3] Source # | |
ExtractTuple 2 '[e0, e1, e2] Source # | |
ExtractTuple 3 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 3 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 3 '[e0, e1, e2, e3, e4, e5] Source # | |
ExtractTuple 3 '[e0, e1, e2, e3, e4] Source # | |
ExtractTuple 3 '[e0, e1, e2, e3] Source # | |
ExtractTuple 4 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 4 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 4 '[e0, e1, e2, e3, e4, e5] Source # | |
ExtractTuple 4 '[e0, e1, e2, e3, e4] Source # | |
ExtractTuple 5 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 5 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 5 '[e0, e1, e2, e3, e4, e5] Source # | |
ExtractTuple 6 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
ExtractTuple 6 '[e0, e1, e2, e3, e4, e5, e6] Source # | |
ExtractTuple 7 '[e0, e1, e2, e3, e4, e5, e6, e7] Source # | |
class TupleCon xs where Source #
Create a Tuple
Instances
TupleCon ('[] :: [Type]) Source # | |
Defined in Data.Variant.Tuple | |
TupleCon '[a, b, c, d, e, f] Source # | |
Defined in Data.Variant.Tuple | |
TupleCon '[a, b, c, d, e] Source # | |
Defined in Data.Variant.Tuple | |
TupleCon '[a, b, c, d] Source # | |
Defined in Data.Variant.Tuple | |
TupleCon '[a, b, c] Source # | |
Defined in Data.Variant.Tuple | |
TupleCon '[a, b] Source # | |
Defined in Data.Variant.Tuple | |
TupleCon '[a] Source # | |
Defined in Data.Variant.Tuple |
tupleHead :: forall xs. ExtractTuple 0 xs => Tuple xs -> Index 0 xs Source #
Get first element of the tuple
class TupleTail ts ts' | ts -> ts' where Source #
Instances
TupleTail (a, b) (b) Source # | |
Defined in Data.Variant.Tuple | |
TupleTail (a, b, c) (b, c) Source # | |
Defined in Data.Variant.Tuple | |
TupleTail (a, b, c, d) (b, c, d) Source # | |
Defined in Data.Variant.Tuple | |
TupleTail (a, b, c, d, e) (b, c, d, e) Source # | |
Defined in Data.Variant.Tuple | |
TupleTail (a, b, c, d, e, f) (b, c, d, e, f) Source # | |
Defined in Data.Variant.Tuple |
class TupleCons t ts ts' | t ts -> ts' where Source #
Instances
TupleCons a (b) (a, b) Source # | |
Defined in Data.Variant.Tuple | |
TupleCons a (b, c) (a, b, c) Source # | |
Defined in Data.Variant.Tuple | |
TupleCons a (b, c, d) (a, b, c, d) Source # | |
Defined in Data.Variant.Tuple | |
TupleCons a (b, c, d, e) (a, b, c, d, e) Source # | |
Defined in Data.Variant.Tuple | |
TupleCons a (b, c, d, e, f) (a, b, c, d, e, f) Source # | |
Defined in Data.Variant.Tuple |
class ReorderTuple t1 t2 where Source #
Reorder tuple elements
tupleReorder :: t1 -> t2 Source #
Reorder tuple elements
Instances
ReorderTuple (a) (a) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a) -> (a) Source # | |
ReorderTuple (a, b) (a, b) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b) -> (a, b) Source # | |
ReorderTuple (a, b) (b, a) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b) -> (b, a) Source # | |
ReorderTuple (a, b, c) (a, b, c) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c) -> (a, b, c) Source # | |
ReorderTuple (a, b, c) (a, c, b) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c) -> (a, c, b) Source # | |
ReorderTuple (a, b, c) (b, a, c) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c) -> (b, a, c) Source # | |
ReorderTuple (a, b, c) (b, c, a) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c) -> (b, c, a) Source # | |
ReorderTuple (a, b, c) (c, a, b) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c) -> (c, a, b) Source # | |
ReorderTuple (a, b, c) (c, b, a) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c) -> (c, b, a) Source # | |
ReorderTuple (a, b, c, d) (a, b, c, d) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d) -> (a, b, c, d) Source # | |
ReorderTuple (b, c, d) (x, y, z) => ReorderTuple (a, b, c, d) (a, x, y, z) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d) -> (a, x, y, z) Source # | |
ReorderTuple (a, c, d) (x, y, z) => ReorderTuple (a, b, c, d) (x, b, y, z) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d) -> (x, b, y, z) Source # | |
ReorderTuple (a, b, d) (x, y, z) => ReorderTuple (a, b, c, d) (x, y, c, z) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d) -> (x, y, c, z) Source # | |
ReorderTuple (a, b, c) (x, y, z) => ReorderTuple (a, b, c, d) (x, y, z, d) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d) -> (x, y, z, d) Source # | |
ReorderTuple (a, b, c, d, e) (a, b, c, d, e) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e) -> (a, b, c, d, e) Source # | |
ReorderTuple (b, c, d, e) (x, y, z, w) => ReorderTuple (a, b, c, d, e) (a, x, y, z, w) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e) -> (a, x, y, z, w) Source # | |
ReorderTuple (a, c, d, e) (x, y, z, w) => ReorderTuple (a, b, c, d, e) (x, b, y, z, w) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e) -> (x, b, y, z, w) Source # | |
ReorderTuple (a, b, d, e) (x, y, z, w) => ReorderTuple (a, b, c, d, e) (x, y, c, z, w) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e) -> (x, y, c, z, w) Source # | |
ReorderTuple (a, b, c, e) (x, y, z, w) => ReorderTuple (a, b, c, d, e) (x, y, z, d, w) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e) -> (x, y, z, d, w) Source # | |
ReorderTuple (a, b, c, d) (x, y, z, w) => ReorderTuple (a, b, c, d, e) (x, y, z, w, e) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e) -> (x, y, z, w, e) Source # | |
ReorderTuple (a, b, c, d, e, f) (a, b, c, d, e, f) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (a, b, c, d, e, f) Source # | |
ReorderTuple (b, c, d, e, f) (x, y, z, w, v) => ReorderTuple (a, b, c, d, e, f) (a, x, y, z, w, v) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (a, x, y, z, w, v) Source # | |
ReorderTuple (a, c, d, e, f) (x, y, z, w, v) => ReorderTuple (a, b, c, d, e, f) (x, b, y, z, w, v) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (x, b, y, z, w, v) Source # | |
ReorderTuple (a, b, d, e, f) (x, y, z, w, v) => ReorderTuple (a, b, c, d, e, f) (x, y, c, z, w, v) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (x, y, c, z, w, v) Source # | |
ReorderTuple (a, b, c, e, f) (x, y, z, w, v) => ReorderTuple (a, b, c, d, e, f) (x, y, z, d, w, v) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (x, y, z, d, w, v) Source # | |
ReorderTuple (a, b, c, d, f) (x, y, z, w, v) => ReorderTuple (a, b, c, d, e, f) (x, y, z, w, e, v) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (x, y, z, w, e, v) Source # | |
ReorderTuple (a, b, c, d, e) (x, y, z, w, v) => ReorderTuple (a, b, c, d, e, f) (x, y, z, w, v, f) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f) -> (x, y, z, w, v, f) Source # | |
ReorderTuple (a, b, c, d, e, f, g) (a, b, c, d, e, f, g) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (a, b, c, d, e, f, g) Source # | |
ReorderTuple (b, c, d, e, f, g) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (a, x, y, z, w, v, u) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (a, x, y, z, w, v, u) Source # | |
ReorderTuple (a, c, d, e, f, g) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (x, b, y, z, w, v, u) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (x, b, y, z, w, v, u) Source # | |
ReorderTuple (a, b, d, e, f, g) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (x, y, c, z, w, v, u) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (x, y, c, z, w, v, u) Source # | |
ReorderTuple (a, b, c, e, f, g) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (x, y, z, d, w, v, u) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (x, y, z, d, w, v, u) Source # | |
ReorderTuple (a, b, c, d, f, g) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (x, y, z, w, e, v, u) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (x, y, z, w, e, v, u) Source # | |
ReorderTuple (a, b, c, d, e, g) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (x, y, z, w, v, f, u) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (x, y, z, w, v, f, u) Source # | |
ReorderTuple (a, b, c, d, e, f) (x, y, z, w, v, u) => ReorderTuple (a, b, c, d, e, f, g) (x, y, z, w, v, u, g) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g) -> (x, y, z, w, v, u, g) Source # | |
ReorderTuple (a, b, c, d, e, f, g, h) (a, b, c, d, e, f, g, h) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g, h) -> (a, b, c, d, e, f, g, h) Source # | |
ReorderTuple (a, b, c, d, e, f, g, h, i) (a, b, c, d, e, f, g, h, i) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g, h, i) -> (a, b, c, d, e, f, g, h, i) Source # | |
ReorderTuple (a, b, c, d, e, f, g, h, i, j) (a, b, c, d, e, f, g, h, i, j) Source # | |
Defined in Data.Variant.Tuple tupleReorder :: (a, b, c, d, e, f, g, h, i, j) -> (a, b, c, d, e, f, g, h, i, j) Source # |