Expected interface for pure expressions that can be used to specialize the Imperative dialect.
- Ident : Type
Kinds of identifiers allowed in expressions. We expect identifiers to have decidable equality; see
EqIdent. - EqIdent : DecidableEq self.Ident
- Expr : Type
Expressions
- Ty : Type
Types
- ExprMetadata : Type
Expression metadata type (for use in function declarations, etc.)
- TyEnv : Type
Typing environment, expected to contain a map of variables to their types, type substitution, etc.
- TyContext : Type
Typing context, expected to contain information that does not change during type checking/inference (e.g., known types and known functions.)
- EvalEnv : Type
Evaluation environment
Instances For
Type Classes for Expressions #
Instances
def
Imperative.HasSubstFvar.substFvars
{P : PureExpr}
[HasSubstFvar P]
(e : P.Expr)
(substs : List (P.Ident × P.Expr))
:
P.Expr
Substitute multiple free variables with expressions
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
A function declaration for use with PureExpr - instantiation of Func for
any expression system that implements the PureExpr interface.
Equations
- Imperative.PureFunc P = Strata.DL.Util.Func P.Ident P.Expr P.Ty P.ExprMetadata