summaryrefslogtreecommitdiff
path: root/transfer
diff options
context:
space:
mode:
authorbringert <bringert@cs.chalmers.se>2005-12-06 16:26:55 +0000
committerbringert <bringert@cs.chalmers.se>2005-12-06 16:26:55 +0000
commitee4adf5ba8ff50b4580a18d197f9e05d36195ede (patch)
treef12c7b7cc839a35735313c584b96c9e5febc5f2b /transfer
parent41aaed58d4734b7cec5a4d2567283cb818f77cbb (diff)
Simple transfer tutorial touch-up.
Diffstat (limited to 'transfer')
-rw-r--r--transfer/examples/aggregation/aggregate.tr49
1 files changed, 24 insertions, 25 deletions
diff --git a/transfer/examples/aggregation/aggregate.tr b/transfer/examples/aggregation/aggregate.tr
index 7cdfaddca..b71ccfef2 100644
--- a/transfer/examples/aggregation/aggregate.tr
+++ b/transfer/examples/aggregation/aggregate.tr
@@ -1,13 +1,31 @@
import prelude
import tree
-derive Eq Tree
-derive Compos Tree
+
+-- aggreg specialized for Tree S
+aggregS : Tree S -> Tree S
+aggregS = aggreg S
+
+-- For now, here's what we have to do:
+aggreg : (A : Type) -> Tree A -> Tree A
+aggreg _ t =
+ case t of
+ ConjS c s1 s2 ->
+ case (aggreg ? s1, aggreg ? s2) of
+ (Pred np1 vp1, Pred np2 vp2) | eq NP (eq_Tree NP) np1 np2 ->
+ Pred np1 (ConjVP c vp1 vp2)
+ (Pred np1 vp1, Pred np2 vp2) | eq VP (eq_Tree VP) vp1 vp2 ->
+ Pred (ConjNP c np1 np2) vp1
+ (s1',s2') -> ConjS c s1' s2'
+ _ -> composOp ? ? compos_Tree ? aggreg t
+
+
+
--- When the Transfer compiler gets meta variable inference,
--- we can write:
{-
+-- When the Transfer compiler gets meta variable inference,
+-- we can write this:
aggreg : (A : Type) -> Tree A -> Tree A
aggreg _ t =
case t of
@@ -21,8 +39,9 @@ aggreg _ t =
_ -> composOp ? ? ? ? aggreg t
-}
--- Adding hidden arguments, we could write something like:
+
{-
+-- If we added idden arguments, we could write something like this:
aggreg : (A : Type) => Tree A -> Tree A
aggreg t =
case t of
@@ -35,23 +54,3 @@ aggreg t =
(s1',s2') -> ConjS c s1' s2'
_ -> composOp aggreg t
-}
-
-
--- For now, here's what we have to do:
-
-aggreg : (A : Type) -> Tree A -> Tree A
-aggreg _ t =
- case t of
- ConjS c s1 s2 ->
- case (aggreg ? s1, aggreg ? s2) of
- (Pred np1 vp1, Pred np2 vp2) | eq NP (eq_Tree NP) np1 np2 ->
- Pred np1 (ConjVP c vp1 vp2)
- (Pred np1 vp1, Pred np2 vp2) | eq VP (eq_Tree VP) vp1 vp2 ->
- Pred (ConjNP c np1 np2) vp1
- (s1',s2') -> ConjS c s1' s2'
- _ -> composOp ? ? compos_Tree ? aggreg t
-
-
--- aggreg specialized for Tree S
-aggregS : Tree S -> Tree S
-aggregS = aggreg S