Safe Haskell | None |
---|---|

Language | Haskell2010 |

Subsets.

- choose_ :: Int -> Int -> [[Int]]
- choose :: Int -> [a] -> [[a]]
- choose' :: Int -> [a] -> [([a], [a])]
- choose'' :: Int -> [(a, b)] -> [([a], [b])]
- chooseTagged :: Int -> [a] -> [[Either a a]]
- combine :: Int -> [a] -> [[a]]
- compose :: Int -> [a] -> [[a]]
- tuplesFromList :: Int -> [a] -> [[a]]
- listTensor :: [[a]] -> [[a]]
- kSublists :: Int -> [a] -> [[a]]
- sublists :: [a] -> [[a]]
- countKSublists :: Int -> Int -> Integer
- countSublists :: Int -> Integer
- randomChoice :: RandomGen g => Int -> Int -> g -> ([Int], g)

# Choices

choose_ :: Int -> Int -> [[Int]] Source #

`choose_ k n`

returns all possible ways of choosing `k`

disjoint elements from `[1..n]`

choose_ k n == choose k [1..n]

choose :: Int -> [a] -> [[a]] Source #

All possible ways to choose `k`

elements from a list, without
repetitions. "Antisymmetric power" for lists. Synonym for `kSublists`

.

choose' :: Int -> [a] -> [([a], [a])] Source #

A version of `choose`

which also returns the complementer sets.

choose k = map fst . choose' k

choose'' :: Int -> [(a, b)] -> [([a], [b])] Source #

Another variation of `choose'`

. This satisfies

choose'' k == map (\(xs,ys) -> (map fst xs, map snd ys)) . choose' k

chooseTagged :: Int -> [a] -> [[Either a a]] Source #

# Compositions

combine :: Int -> [a] -> [[a]] Source #

All possible ways to choose `k`

elements from a list, *with repetitions*.
"Symmetric power" for lists. See also Math.Combinat.Compositions.
TODO: better name?

# Tensor products

tuplesFromList :: Int -> [a] -> [[a]] Source #

"Tensor power" for lists. Special case of `listTensor`

:

tuplesFromList k xs == listTensor (replicate k xs)

See also Math.Combinat.Tuples. TODO: better name?

listTensor :: [[a]] -> [[a]] Source #

"Tensor product" for lists.

# Sublists

kSublists :: Int -> [a] -> [[a]] Source #

Sublists of a list having given number of elements. Synonym for `choose`

.

countSublists :: Int -> Integer Source #

`# = 2^n`

.