summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-11-28 21:24:31 +0000
committerbringert <bringert@cs.chalmers.se>2005-11-28 21:24:31 +0000
commit2455b73559560a24205f3c8d32ab86736a3cc5e8 (patch)
tree8ebf52be4a94d22e8b95fbbc311f4dca3a54f79e
parent8535445a81828da4b94b50b7274234ff6a414134 (diff)
Changed exp.tr to use layout syntax and the Cat type.
-rw-r--r--transfer/examples/exp.tr49
1 files changed, 24 insertions, 25 deletions
diff --git a/transfer/examples/exp.tr b/transfer/examples/exp.tr
index b7202fedf..980c5d724 100644
--- a/transfer/examples/exp.tr
+++ b/transfer/examples/exp.tr
@@ -1,31 +1,30 @@
-data Stm : Type where {} ;
-data Exp : Type where {} ;
-data Var : Type where {} ;
-data Typ : Type where {} ;
+data Cat : Type where
+ Stm : Cat
+ Exp : Cat
+ Var : Cat
+ Typ : Cat
+ ListStm : Cat
-data ListStm : Type where {} ;
+data Tree : Type -> 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
-data Tree : Type -> 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
- NilStm : Tree ListStm ;
- ConsStm : Tree Stm -> Tree ListStm -> Tree ListStm ;
- } ;
+derive composOp Tree
-derive composOp Tree ;
+rename : (String -> String) -> (C : Type) -> Tree C -> Tree C
+rename f C t = case t of
+ V x -> V (f x)
+ _ -> composOp_Tree C (rename f) t
-rename : (String -> String) -> (C : Type) -> Tree C -> Tree C;
-rename f C t = case t of {
- V x -> V (f x) ;
- _ -> composOp_Tree C (rename f) t;
- } ;