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

Language | Haskell2010 |

## Synopsis

- type Orbit a = Vector a
- data Permutation a = Permutation {}
- orbits :: forall a a. Lens (Permutation a) (Permutation a) (Vector (Orbit a)) (Vector (Orbit a))
- indexes :: forall a. Lens' (Permutation a) (Vector (Int, Int))
- elems :: Permutation a -> Vector a
- size :: Permutation a -> Int
- cycleOf :: Enum a => Permutation a -> a -> Orbit a
- next :: Vector v a => v a -> Int -> a
- previous :: Vector v a => v a -> Int -> a
- lookupIdx :: Enum a => Permutation a -> a -> (Int, Int)
- apply :: Enum a => Permutation a -> a -> a
- orbitFrom :: Eq a => a -> (a -> a) -> [a]
- cycleRep :: (Vector v a, Enum a, Eq a) => v a -> (a -> a) -> Permutation a
- toCycleRep :: Enum a => Int -> [[a]] -> Permutation a
- genIndexes :: Enum a => Int -> [[a]] -> Vector (Int, Int)
- ix' :: (Vector v a, Index (v a) ~ Int, IxValue (v a) ~ a, Ixed (v a)) => Int -> Lens' (v a) a

# Documentation

data Permutation a Source #

Cyclic representation of a permutation.

## Instances

orbits :: forall a a. Lens (Permutation a) (Permutation a) (Vector (Orbit a)) (Vector (Orbit a)) Source #

elems :: Permutation a -> Vector a Source #

size :: Permutation a -> Int Source #

lookupIdx :: Enum a => Permutation a -> a -> (Int, Int) Source #

Lookup the indices of an element, i.e. in which orbit the item is, and the index within the orbit.

runnign time: \(O(1)\)

apply :: Enum a => Permutation a -> a -> a Source #

Apply the permutation, i.e. consider the permutation as a function.

orbitFrom :: Eq a => a -> (a -> a) -> [a] Source #

Find the cycle in the permutation starting at element s

toCycleRep :: Enum a => Int -> [[a]] -> Permutation a Source #

Given the size n, and a list of Cycles, turns the cycles into a cyclic representation of the Permutation.