Hi there,

in structural operational semantics, an evaluation context is often used to decompose an expression into a redex and its context. In a formal semantics on paper, an expression can just be "pattern matched" over the grammar of an evaluation context. If one wants to implement such a semantics in the form of an interpreter, I could not come up with a similarly nice solution. I have declared two separate data types (one for expressions, and one for evaluation contexts) and explicit functions to convert an expression into a (evaluation context, redex) pair.

For example, I could have

data Expr = Val Int | Plus Expr Expr

and

data Ctx = Hole | CPlusl Ctx Expr | CPlusr Int Expr

Are there any tricks to mimick more closely what is going on in the formal semantics?

Klaus
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to