Portability | unportable |
---|---|
Stability | unstable |
Maintainer | Martin Avanzini <martin.avanzini@uibk.ac.at> |
Safe Haskell | Safe-Infered |
This module provides the datatype Enumeration
together with operations.
- class (Typeable a, Eq a) => Numbering a where
- ppNumbering :: a -> Doc
- data SomeNumbering = forall a . Numbering a => SN a
- type Enumeration e = [(SomeNumbering, e)]
- enumeration :: Numbering a => [(a, e)] -> Enumeration e
- enumeration' :: [e] -> Enumeration e
- toList :: Enumeration e -> [e]
- find :: Numbering n => n -> Enumeration a -> Maybe a
- zipEnum :: [(SomeNumbering, t)] -> [(SomeNumbering, a1)] -> [Maybe (SomeNumbering, (t, a1))]
- zipSafe :: Enumeration a -> Enumeration b -> Maybe (Enumeration (a, b))
- zipUnsafe :: Enumeration a -> Enumeration b -> Enumeration (a, b)
- mapEnum :: (e -> f) -> Enumeration e -> Enumeration f
- evalEnum :: SolverM m => Bool -> Enumeration (m a) -> m (Maybe (Enumeration a))
Documentation
class (Typeable a, Eq a) => Numbering a where
A numbering can be used as index in an Enumeration
.
ppNumbering :: a -> Doc
data SomeNumbering
Existential quantification of Numbering
.
type Enumeration e = [(SomeNumbering, e)]
An enum is an associated list with existentially quantified numberings.
Operations
enumeration :: Numbering a => [(a, e)] -> Enumeration e
enumeration' :: [e] -> Enumeration e
toList :: Enumeration e -> [e]
find :: Numbering n => n -> Enumeration a -> Maybe a
zipEnum :: [(SomeNumbering, t)] -> [(SomeNumbering, a1)] -> [Maybe (SomeNumbering, (t, a1))]
zipSafe :: Enumeration a -> Enumeration b -> Maybe (Enumeration (a, b))
zipUnsafe :: Enumeration a -> Enumeration b -> Enumeration (a, b)
mapEnum :: (e -> f) -> Enumeration e -> Enumeration f
evalEnum :: SolverM m => Bool -> Enumeration (m a) -> m (Maybe (Enumeration a))