summaryrefslogtreecommitdiff
path: root/transfer/examples
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-12-01 15:37:47 +0000
committerbringert <bringert@cs.chalmers.se>2005-12-01 15:37:47 +0000
commit635845eed8acf476621bd0d01a85146fb19693a6 (patch)
tree2c40fe3e2b32ec0fdc07b445a3c184f03d5ecc77 /transfer/examples
parent30bb51372fa8fdb6d68d1fd1b15793940c8d4e3b (diff)
Transfer: added support for disjunctive patterns.
Diffstat (limited to 'transfer/examples')
-rw-r--r--transfer/examples/disjpatt.tr24
1 files changed, 24 insertions, 0 deletions
diff --git a/transfer/examples/disjpatt.tr b/transfer/examples/disjpatt.tr
new file mode 100644
index 000000000..740e08a7b
--- /dev/null
+++ b/transfer/examples/disjpatt.tr
@@ -0,0 +1,24 @@
+data Cat : Type where
+ VarOrWild : Cat
+ Exp : Cat
+ Ident : Cat
+
+data Tree : Cat -> Type where
+ EAbs : Tree VarOrWild -> Tree Exp -> Tree Exp
+ EPi : Tree VarOrWild -> Tree Exp -> Tree Exp -> Tree Exp
+ EVar : Tree Ident -> Tree Exp
+ EType : Tree Exp
+ EStr : String -> Tree Exp
+ EInt : Integer -> Tree Exp
+ VVar : Tree Ident -> Tree VarOrWild
+ VWild : Tree VarOrWild
+ Ident : String -> Tree Ident
+
+
+f e = case e of
+ EAbs (VWild || VVar _) e || EPi (VWild || VVar _) _ e -> doSomething e
+ Ident i -> Ident i
+ _ -> catchAll
+
+
+g (Ident x || EAbs (VWild || VVar _) t e) = x e \ No newline at end of file