| Safe Haskell | Safe-Infered |
|---|
Data.Numbering
Contents
- data Numbering a = UnsafeMkNumbering {}
- enumNu :: Enum a => a -> a -> Numbering a
- enumNu' :: Enum a => Int -> Int -> Numbering a
- nuFromSet :: Map Int ignored -> Numbering Int
- nuFromDistinctVector :: (Ord a, Show a, Vector v a) => v a -> Numbering a
- nuFromDistinctVectorG :: (Show a, Vector v a) => map -> ((a -> Int -> Int -> t) -> a -> Int -> map -> map) -> (a -> map -> Maybe Int) -> v a -> Numbering a
- nuFromDistinctList :: (Ord a, Show a) => [a] -> Numbering a
- nuFromDistinctUnboxList :: (Ord a, Show a, Unbox a) => [a] -> Numbering a
- nuFromDistinctIntList :: [Int] -> Numbering Int
- nuFromList :: (Ord a, Show a) => [a] -> Numbering a
- nuFromUnboxList :: (Ord a, Show a, Unbox a) => [a] -> Numbering a
- nuFromIntList :: [Int] -> Numbering Int
- finiteTypeNu :: (Enum a, Bounded a) => Numbering a
- idNu :: Int -> Numbering Int
- sumNu :: (a1 -> a) -> (a2 -> a) -> ((a1 -> Int) -> (a2 -> Int) -> a -> Int) -> Numbering a1 -> Numbering a2 -> Numbering a
- eitherNu :: Numbering a -> Numbering b -> Numbering (Either a b)
- prodNu :: (a -> a2) -> (a -> a1) -> (a2 -> a1 -> a) -> Numbering a2 -> Numbering a1 -> Numbering a
- pairNu :: Numbering a -> Numbering b -> Numbering (a, b)
- nuIndices :: Numbering a -> [Int]
- nuElements :: Numbering a -> [a]
- data NumberingBrokenInvariantException a = NumberingBrokenInvariantException {}
- checkNu :: Numbering a -> Either (NumberingBrokenInvariantException a) ()
Documentation
Invariant: For all i in [ 0 .. , nuLength - 1 ].
toInt (fromInt i) == i
This implies that for all a of the form (with fromInt ii in [ 0 .. ), nuLength - 1 ].
fromInt (toInt a) = a
The behaviour of fromInt for out-of-bounds indices and that of toInt for elements not occuring in the numbering is undefined.
Construction
enumNu :: Enum a => a -> a -> Numbering aSource
enumNu a b creates a numbering of the elements [a .. b] (inclusively).
enumNu' :: Enum a => Int -> Int -> Numbering aSource
enumNu' i j creates a numbering of the elements [toEnum i .. toEnum j] (inclusively).
nuFromDistinctVector :: (Ord a, Show a, Vector v a) => v a -> Numbering aSource
The distinctness precondition is checked (we have to create a map anyway).
Arguments
| :: (Show a, Vector v a) | |
| => map |
|
| -> ((a -> Int -> Int -> t) -> a -> Int -> map -> map) |
|
| -> (a -> map -> Maybe Int) |
|
| -> v a | |
| -> Numbering a |
Allows customization of the map type used.
nuFromDistinctList :: (Ord a, Show a) => [a] -> Numbering aSource
See nuFromDistinctVector.
nuFromDistinctIntList :: [Int] -> Numbering IntSource
nuFromList :: (Ord a, Show a) => [a] -> Numbering aSource
Uniquifies the input first (resulting in an unspecified order).
nuFromUnboxList :: (Ord a, Show a, Unbox a) => [a] -> Numbering aSource
Uniquifies the input first (resulting in an unspecified order).
nuFromIntList :: [Int] -> Numbering IntSource
Uniquifies the input first (resulting in an unspecified order).
finiteTypeNu :: (Enum a, Bounded a) => Numbering aSource
Combination
Arguments
| :: (a1 -> a) |
|
| -> (a2 -> a) |
|
| -> ((a1 -> Int) -> (a2 -> Int) -> a -> Int) |
|
| -> Numbering a1 | |
| -> Numbering a2 | |
| -> Numbering a |
Creates a numbering for an Either-like type, given numberings for the summand types.
Arguments
| :: (a -> a2) |
|
| -> (a -> a1) |
|
| -> (a2 -> a1 -> a) |
|
| -> Numbering a2 | |
| -> Numbering a1 | |
| -> Numbering a |
Creates a numbering for an pair-like type, given numberings for the component types.
Destruction
nuElements :: Numbering a -> [a]Source
data NumberingBrokenInvariantException a Source
Constructors
| NumberingBrokenInvariantException | |
Fields | |
Instances