syntactic-1.16.2: Generic abstract syntax, and utilities for embedded languages

Safe HaskellNone
LanguageHaskell2010

Language.Syntactic.Interpretation.Equality

Synopsis

Documentation

class Equality expr where Source

Equality for expressions

Minimal complete definition

Nothing

Methods

equal :: expr a -> expr b -> Bool Source

Equality for expressions

Comparing expressions of different types is often needed when dealing with expressions with existentially quantified sub-terms.

exprHash :: expr a -> Hash Source

Computes a Hash for an expression. Expressions that are equal according to equal must result in the same hash:

equal a b  ==>  exprHash a == exprHash b

Instances

Equality Semantics Source 
Equality Empty Source 
Equality Condition Source 
Equality Construct Source 
Equality Identity Source 
Equality Literal Source 
Equality Tuple Source 
Equality Select Source 
Equality Let Source 
Equality Lambda Source

equal does strict identifier comparison; i.e. no alpha equivalence.

exprHash assigns the same hash to all Lambda bindings. This is a valid over-approximation that enables the following property:

alphaEq a b  ==>  exprHash a == exprHash b
Equality Variable Source

equal does strict identifier comparison; i.e. no alpha equivalence.

exprHash assigns the same hash to all variables. This is a valid over-approximation that enables the following property:

alphaEq a b  ==>  exprHash a == exprHash b
Equality dom => Equality (AST dom) Source 
Monad m => Equality (MONAD m) Source 
(Equality expr1, Equality expr2) => Equality ((:+:) expr1 expr2) Source 
Equality dom => Equality ((:||) dom pred) Source 
Equality dom => Equality ((:|) dom pred) Source 
Equality expr => Equality (Decor info expr) Source 
Equality dom => Equality (SubConstr1 c dom p) Source 
Equality dom => Equality (SubConstr2 c dom pa pb) Source 

equalDefault :: Semantic expr => expr a -> expr b -> Bool Source

Default implementation of equal

exprHashDefault :: Semantic expr => expr a -> Hash Source

Default implementation of exprHash