Safe Haskell | Safe-Infered |
---|

A module of simple utility functions which are used throughout the rest of the library

- toSet :: Ord a => [a] -> [a]
- mergeSet :: Ord a => [a] -> [a] -> [a]
- pairs :: [a] -> [(a, a)]
- ordpair :: Ord t => t -> t -> (t, t)
- foldcmpl :: (t -> t -> Bool) -> [t] -> Bool
- cmpfst :: Ord a => (a, b) -> (a, b1) -> Ordering
- eqfst :: Eq a => (a, b) -> (a, b1) -> Bool
- fromBase :: Num a => a -> [a] -> a
- powersetdfs :: [a] -> [[a]]
- powersetbfs :: [a] -> [[a]]
- combinationsOf :: Int -> [a] -> [[a]]
- choose :: Integral a => a -> a -> a
- class FinSet x where
- elts :: [x]

- class Num a => HasInverses a where
- inverse :: a -> a

- (^-) :: (HasInverses a, Integral b) => a -> b -> a

# Documentation

powersetdfs :: [a] -> [[a]]Source

Given a set `xs`

, represented as an ordered list, `powersetdfs xs`

returns the list of all subsets of xs, in lex order

powersetbfs :: [a] -> [[a]]Source

Given a set `xs`

, represented as an ordered list, `powersetbfs xs`

returns the list of all subsets of xs, in shortlex order

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

Given a positive integer `k`

, and a set `xs`

, represented as a list,
`combinationsOf k xs`

returns all k-element subsets of xs.
The result will be in lex order, relative to the order of the xs.

choose :: Integral a => a -> a -> aSource

`choose n k`

is the number of ways of choosing k distinct elements from an n-set

The class of finite sets

class Num a => HasInverses a whereSource

A class representing algebraic structures having an inverse operation. Although strictly speaking the Num precondition means that we are requiring the structure also to be a ring, we do sometimes bend the rules (eg permutation groups). Note also that we don't insist that every element has an inverse.

(Ord a, Show a) => HasInverses (Permutation a) | The HasInverses instance is what enables us to write |

HasInverses (GroupAlgebra Q) | Note that the inverse of a group algebra element can only be efficiently calculated if the group generated by the non-zero terms is very small (eg <100 elements). |

(^-) :: (HasInverses a, Integral b) => a -> b -> aSource

A trick: x^-1 returns the inverse of x