Math.Combinatorics.Species.Algebra
Description
A data structure to reify combinatorial species.
- data SpeciesAlgT s where
- O :: SpeciesAlgT Z
- I :: SpeciesAlgT (S Z)
- X :: SpeciesAlgT X
- :+: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesAlgT f -> SpeciesAlgT g -> SpeciesAlgT (f :+: g)
- :*: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesAlgT f -> SpeciesAlgT g -> SpeciesAlgT (f :*: g)
- :.: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesAlgT f -> SpeciesAlgT g -> SpeciesAlgT (f :.: g)
- Der :: ShowF (StructureF f) => SpeciesAlgT f -> SpeciesAlgT (Der f)
- E :: SpeciesAlgT E
- C :: SpeciesAlgT C
- OfSize :: SpeciesAlgT f -> (Integer -> Bool) -> SpeciesAlgT f
- OfSizeExactly :: SpeciesAlgT f -> Integer -> SpeciesAlgT f
- data SpeciesAlg where
- SA :: ShowF (StructureF s) => SpeciesAlgT s -> SpeciesAlg
- needsZT :: SpeciesAlgT s -> Bool
- needsZ :: SpeciesAlg -> Bool
- reify :: SpeciesAlg -> SpeciesAlg
- reflectT :: Species s => SpeciesAlgT f -> s
- reflect :: Species s => SpeciesAlg -> s
Documentation
data SpeciesAlgT s whereSource
Reified combinatorial species. Note that SpeciesAlgT has a
phantom type parameter which also reflects the structure, so we
can do case analysis on species at both the value and type level.
Of course, the non-uniform type parameter means that
SpeciesAlgT cannot be an instance of the Species class; for
that purpose the existential wrapper SpeciesAlg is provided.
Constructors
| O :: SpeciesAlgT Z | |
| I :: SpeciesAlgT (S Z) | |
| X :: SpeciesAlgT X | |
| :+: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesAlgT f -> SpeciesAlgT g -> SpeciesAlgT (f :+: g) | |
| :*: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesAlgT f -> SpeciesAlgT g -> SpeciesAlgT (f :*: g) | |
| :.: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesAlgT f -> SpeciesAlgT g -> SpeciesAlgT (f :.: g) | |
| Der :: ShowF (StructureF f) => SpeciesAlgT f -> SpeciesAlgT (Der f) | |
| E :: SpeciesAlgT E | |
| C :: SpeciesAlgT C | |
| OfSize :: SpeciesAlgT f -> (Integer -> Bool) -> SpeciesAlgT f | |
| OfSizeExactly :: SpeciesAlgT f -> Integer -> SpeciesAlgT f |
Instances
| Show (SpeciesAlgT s) |
data SpeciesAlg whereSource
An existential wrapper to hide the phantom type parameter to
SpeciesAlgT, so we can make it an instance of Species.
Constructors
| SA :: ShowF (StructureF s) => SpeciesAlgT s -> SpeciesAlg |
Instances
needsZT :: SpeciesAlgT s -> BoolSource
needsZT is a predicate which checks whether a species uses any
of the operations which are not supported directly by ordinary
generating functions (composition and differentiation), and hence
need cycle index series.
needsZ :: SpeciesAlg -> BoolSource
A version of needsZT for SpeciesAlg.
reify :: SpeciesAlg -> SpeciesAlgSource
Reify a species expression into a tree. Of course, this is just the identity function with a usefully restricted type. For example:
> reify octopus (C . C'_+)
reflectT :: Species s => SpeciesAlgT f -> sSource
Reflect a species back into any instance of the Species class.
reflect :: Species s => SpeciesAlg -> sSource
A version of reflectT for the existential wrapper SpeciesAlg.