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