diff options
Diffstat (limited to 'transfer/examples/exp.tra')
| -rw-r--r-- | transfer/examples/exp.tra | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/transfer/examples/exp.tra b/transfer/examples/exp.tra new file mode 100644 index 000000000..e54b82055 --- /dev/null +++ b/transfer/examples/exp.tra @@ -0,0 +1,33 @@ +import prelude + +data Cat : Type where + Stm : Cat + Exp : Cat + Var : Cat + Typ : Cat + ListStm : Cat + +data Tree : Cat -> Type where + SDecl : Tree Typ -> Tree Var -> Tree Stm + SAss : Tree Var -> Tree Exp -> Tree Stm + SBlock : Tree ListStm -> Tree Stm + EAdd : Tree Exp -> Tree Exp -> Tree Exp + EStm : Tree Stm -> Tree Exp + EVar : Tree Var -> Tree Exp + EInt : Integer -> Tree Exp + V : String -> Tree Var + TInt : Tree Typ + TFloat : Tree Typ + + NilStm : Tree ListStm + ConsStm : Tree Stm -> Tree ListStm -> Tree ListStm + +derive Compos Tree + +rename : (String -> String) -> (C : Type) -> Tree C -> Tree C +rename f C t = case t of + V x -> V (f x) + _ -> composOp ? ? compos_Tree C (rename f) t + + +main = rename (const ? ? "apa") Stm (SAss (V "y") (EAdd (EVar (V "x")) (EInt 2)))
\ No newline at end of file |
