Copyright | (c) Brent Yorgey 2010 |
---|---|
License | BSD-style (see LICENSE) |
Maintainer | byorgey@cis.upenn.edu |
Stability | experimental |
Safe Haskell | None |
Language | Haskell2010 |
Type class instances for TSpeciesAST
, ESpeciesAST
, and
SpeciesAST
, in a separate module to avoid a dependency cycle
between Math.Combinatorics.Species.AST and
Math.Combinatorics.Species.Class.
This module also contains functions for reifying species expressions to ASTs and reflecting ASTs back into other species instances, which are in this module since they depend on the AST type class instances.
- reify :: SpeciesAST -> SpeciesAST
- reifyE :: ESpeciesAST -> ESpeciesAST
- reflect :: Species s => SpeciesAST -> s
- reflectT :: Species s => TSpeciesAST f -> s
- reflectE :: Species s => ESpeciesAST -> s
Documentation
reify :: SpeciesAST -> SpeciesAST Source
Reify a species expression into an AST. (Actually, this is just the identity function with a usefully restricted type.) For example:
> reify octopus C . TL+ > reify (ksubset 3) E3 * TE
reifyE :: ESpeciesAST -> ESpeciesAST Source
The same as reify, but produce a typed, size-annotated AST.
reflect :: Species s => SpeciesAST -> s Source
Reflect an AST back into any instance of the Species
class.
reflectT :: Species s => TSpeciesAST f -> s Source
Reflect a typed AST back into any instance of the Species
class.
reflectE :: Species s => ESpeciesAST -> s Source
Reflect an existentially wrapped typed AST back into any
instance of the Species
class.