diff options
| author | bringert <bringert@cs.chalmers.se> | 2005-12-06 16:26:55 +0000 |
|---|---|---|
| committer | bringert <bringert@cs.chalmers.se> | 2005-12-06 16:26:55 +0000 |
| commit | ee4adf5ba8ff50b4580a18d197f9e05d36195ede (patch) | |
| tree | f12c7b7cc839a35735313c584b96c9e5febc5f2b /transfer | |
| parent | 41aaed58d4734b7cec5a4d2567283cb818f77cbb (diff) | |
Simple transfer tutorial touch-up.
Diffstat (limited to 'transfer')
| -rw-r--r-- | transfer/examples/aggregation/aggregate.tr | 49 |
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 |
