Subsets.

- choose :: Int -> [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

# Documentation

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

All possible ways to choose `k`

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

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.Combinations.
TODO: better name?

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.

countKSublists :: Int -> Int -> IntegerSource

`# = binom { n } { k }`

.

countSublists :: Int -> IntegerSource

`# = 2^n`

.