species-0.2.1: Computational combinatorial speciesSource codeContentsIndex
Math.Combinatorics.Species.AST
Description
A data structure to reify combinatorial species.
Synopsis
data SpeciesTypedAST s where
N :: Integer -> SpeciesTypedAST Z
X :: SpeciesTypedAST X
E :: SpeciesTypedAST E
C :: SpeciesTypedAST C
L :: SpeciesTypedAST L
Subset :: SpeciesTypedAST Sub
KSubset :: Integer -> SpeciesTypedAST Sub
Elt :: SpeciesTypedAST Elt
:+: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :+: g)
:*: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :*: g)
:.: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :.: g)
:><: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :><: g)
:@: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :@: g)
Der :: ShowF (StructureF f) => SpeciesTypedAST f -> SpeciesTypedAST (Der f)
OfSize :: SpeciesTypedAST f -> (Integer -> Bool) -> SpeciesTypedAST f
OfSizeExactly :: SpeciesTypedAST f -> Integer -> SpeciesTypedAST f
NonEmpty :: SpeciesTypedAST f -> SpeciesTypedAST f
data SpeciesAST where
SA :: (ShowF (StructureF s), Typeable1 (StructureF s)) => SpeciesTypedAST s -> SpeciesAST
needsZT :: SpeciesTypedAST s -> Bool
needsZ :: SpeciesAST -> Bool
reify :: SpeciesAST -> SpeciesAST
reflectT :: Species s => SpeciesTypedAST f -> s
reflect :: Species s => SpeciesAST -> s
Documentation
data SpeciesTypedAST s whereSource

Reified combinatorial species. Note that SpeciesTypedAST 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 SpeciesTypedAST cannot be an instance of the Species class; for that purpose the existential wrapper SpeciesAST is provided.

Constructors
N :: Integer -> SpeciesTypedAST Z
X :: SpeciesTypedAST X
E :: SpeciesTypedAST E
C :: SpeciesTypedAST C
L :: SpeciesTypedAST L
Subset :: SpeciesTypedAST Sub
KSubset :: Integer -> SpeciesTypedAST Sub
Elt :: SpeciesTypedAST Elt
:+: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :+: g)
:*: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :*: g)
:.: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :.: g)
:><: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :><: g)
:@: :: (ShowF (StructureF f), ShowF (StructureF g)) => SpeciesTypedAST f -> SpeciesTypedAST g -> SpeciesTypedAST (f :@: g)
Der :: ShowF (StructureF f) => SpeciesTypedAST f -> SpeciesTypedAST (Der f)
OfSize :: SpeciesTypedAST f -> (Integer -> Bool) -> SpeciesTypedAST f
OfSizeExactly :: SpeciesTypedAST f -> Integer -> SpeciesTypedAST f
NonEmpty :: SpeciesTypedAST f -> SpeciesTypedAST f
show/hide Instances
data SpeciesAST whereSource
An existential wrapper to hide the phantom type parameter to SpeciesTypedAST, so we can make it an instance of Species.
Constructors
SA :: (ShowF (StructureF s), Typeable1 (StructureF s)) => SpeciesTypedAST s -> SpeciesAST
show/hide Instances
needsZT :: SpeciesTypedAST 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, differentiation, cartesian product, and functor composition), and hence need cycle index series.
needsZ :: SpeciesAST -> BoolSource
A version of needsZT for SpeciesAST.
reify :: SpeciesAST -> SpeciesASTSource

Reify a species expression into an AST. Of course, this is just the identity function with a usefully restricted type. For example:

 > reify octopus
 C . L+
 > reify (ksubset 3)
 E3 * E
reflectT :: Species s => SpeciesTypedAST f -> sSource
Reflect an AST back into any instance of the Species class.
reflect :: Species s => SpeciesAST -> sSource
Reflect an AST back into any instance of the Species class.
Produced by Haddock version 2.6.0