Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Defines Language
, which is the required constraint on expressions that are
to be represented in e-graph and on which equality saturation can be run.
Example
data Expr a = Sym String | Const Double | UnOp UOp a | BinOp BOp a a deriving ( Eq, Ord, Functor , Foldable, Traversable) instance Eq1 Expr where ... instance Ord1 Expr where ... instance Analysis Expr where ... -- meaning we satisfy all other constraints and Expr is! a language instance Language Expr
Synopsis
- class (Traversable l, Ord1 l) => Language l
Documentation
class (Traversable l, Ord1 l) => Language l Source #
A Language
is the required constraint on expressions that are to be
represented in an e-graph.
Recursive data types must be expressed in its functor form to instance
Language
. Additionally, for a datatype to be a Language
(used in
e-graphs), note that it must satisfy the other class constraints. In
particular an Analysis
must be defined for the
language.