syntactic- Generic abstract syntax, and utilities for embedded languages




class ExprEq expr whereSource

Equality for expressions. The difference between Eq and ExprEq is that ExprEq allows comparison of expressions with different value types. It is assumed that when the types differ, the expressions also differ. The reason for allowing comparison of different types is that this is convenient when the types are existentially quantified.


exprEq :: expr a -> expr b -> BoolSource


ExprEq Literal 
ExprEq PrimFunc 
ExprEq Condition 
ExprEq Select 
ExprEq Tuple 
ExprEq Let 
ExprEq dom => ExprEq (AST dom) 
(ExprEq expr1, ExprEq expr2) => ExprEq (:+: expr1 expr2) 
ExprEq expr => ExprEq (Ann info expr) 

eqSyn :: (Syntactic a dom, ExprEq dom) => a -> a -> BoolSource