| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
Data.Equality.Language
Description
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.