ruler-core-1.0: examples/TypedEval.rul
{
{-# LANGUAGE BangPatterns #-}
module Eval where
import Control.Monad.Error
}
data Expr
var a
con Int
constr a ~ Int
x :: Int
itf Eval
var a
visit eval
inh e :: Expr a
syn val :: a
{
eval = sem eval : Eval
inst m :: IO
visit eval
clause int
match Expr.Int@loc = lhs.e
lhs.val = loc.x
}