úÎ5Ú3.*      !"#$%&'()None#BMakes a homogenous tuple type of the given size and element type ' $(htuple 2) [t| Char |] = (Char,Char) Like *. #Type of the generated expression: 8 (a1, a2, ..) -> (b1, b2, ..) -> ((a1,b1), (a2,b2), ..) Like +. $Type of the generated expression: 0 (a -> b -> c) -> (a, ..) -> (b, ..) -> (c, ..) 7Takes the zipping function as a quoted expression. See  for how this can be useful.  / Generate a projection (like 'fst' and 'snd'). #Type of the generated expression: $ (a -> r -> r) -> r -> (a, ..) -> r RTakes the folding function (but not the seed element) as a quoted expression. See  for how this can be useful. #Type of the generated expression:  (a -> a -> a) -> (a, ..) -> a 7Takes the folding function as a quoted expression. See  for how this can be useful. #Type of the generated expression: $ (r -> a -> r) -> r -> (a, ..) -> r RTakes the folding function (but not the seed element) as a quoted expression. See  for how this can be useful. #Type of the generated expression:  (a -> a -> a) -> (a, ..) -> a 7Takes the folding function as a quoted expression. See  for how this can be useful. #Type of the generated expression:  (a -> Bool) -> (a, ..) -> [a] 0Takes the predicate as a quoted expression. See  for how this can be useful. #Type of the generated expression:  (a -> b) -> (a, ..) -> (b, ..) ‡Takes the mapping as a quoted expression. This can sometimes produce an expression that typechecks when the analogous expression using   does not, e.g.: 5 $(mapTuple 2) Just ((),"foo") -- Type error , $(mapTuple' 2 [| Just |]) ((),"foo") -- OK #Type of the generated expression:  [a] -> Maybe (a, ..) #Type of the generated expression:   [a] -> (a, ..) #The generated function is partial. Like ,. Like -. Like .. Like /. Like 0. Type of generated expression:  Eq a => a -> (a, ..) -> Bool #Type of the generated expression: * (a1, ..) -> (b1, ..) -> (a1, .., b1, ..) splitTupleAt n i => (>x_0, ..., x_{n-1}) -> ((x_0, ..., x_{i-1}),(x_i, ..., x_{n-1}) reindexTuple n js =>  E \(x_0, ..., x_{n-1}) -> (x_{js !! 0}, x_{js !! 1}, ... x_{last js})  For example,  @ $(reindexTuple 3 [1,1,0,0]) ('a','b','c') == ('b','b','a','a') Each element of js# must be nonnegative and less than n. Like 1. rotateTuple n k% creates a function which rotates an n-tuple rightwards by k positions (k! may be negative or greater than n-1). #Like 2. $Like  sequenceA. %*Generates the function which maps a tuple (x_1, ..., x_n)/ to the tuple of all its subtuples of the form (x_{i_1}, ..., x_{i_k}), where i_1 < i_2 < ... < i_k. &#Generates a function which takes a 3 i and a homogenous tuple of size n and deletes the i%-th (0-based) element of the tuple. ' takeTuple n i = ()x_0, ..., x_{n-1}) -> (x_0, ..., x_{m-1})( dropTuple n i = ()x_0, ..., x_{n-1}) -> (x_i, ..., x_{n-1})*Size of tuple '0-based index of component to retrieve   !"#$%&'()*  !"#$%&'()*  %&'()"! #$*  !"#$%&'()4      !"#$%&'()*+,-.,-/,-0,-1,-2,-3,-4,-5,67,89:tuple-th-0.2.3TupleTHhtuplezipTuple zipTupleWith zipTupleWith'proj foldrTuple foldrTuple' foldr1Tuple foldr1Tuple' foldlTuple foldlTuple' foldl1Tuple foldl1Tuple' filterTuple filterTuple'mapTuple mapTuple'safeTupleFromList tupleFromListorTupleandTupleanyTupleallTuple anyTuple' allTuple' elemTuple tupleToList catTuples uncatTuple splitTupleAt reindexTuple reverseTuple rotateTuplesumTuple constTuple sequenceTuplesequenceATuple subtuples deleteAtTuple takeTuple dropTuplesafeDeleteTuplebaseGHC.ListzipzipWithorandanyallelemreverse Control.MonadsequenceGHC.NumNum