Safe Haskell | None |
---|---|
Language | Haskell2010 |
Subsets.
Synopsis
- 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
.