diff options
| author | aarne <aarne@chalmers.se> | 2011-01-11 15:46:43 +0000 |
|---|---|---|
| committer | aarne <aarne@chalmers.se> | 2011-01-11 15:46:43 +0000 |
| commit | e7439d65b0e153434d3acc07df6e2a0972ee79ca (patch) | |
| tree | 36716eec18256eeb600b4a552d9cc80f8ad7f16f /gf-book/examples/chapter6/Aggregation.gf | |
| parent | 276327f7f264e770478a6d8c6e683266505b0a55 (diff) | |
gf-book web page index and toc
Diffstat (limited to 'gf-book/examples/chapter6/Aggregation.gf')
| -rw-r--r-- | gf-book/examples/chapter6/Aggregation.gf | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/gf-book/examples/chapter6/Aggregation.gf b/gf-book/examples/chapter6/Aggregation.gf new file mode 100644 index 000000000..28cbd39ef --- /dev/null +++ b/gf-book/examples/chapter6/Aggregation.gf @@ -0,0 +1,33 @@ +abstract Aggregation = { + cat S ; NP ; VP ; + data + PredVP : NP -> VP -> S ; + ConjS : S -> S -> S ; + ConjVP : VP -> VP -> VP ; + ConjNP : NP -> NP -> NP ; + Run, Walk : VP ; + John, Mary : NP ; + + fun aggr : S -> S ; -- main aggregation function + def aggr (ConjS (PredVP x X) (PredVP y Y)) = + ifS (eqNP x y) + (PredVP x (ConjVP X Y)) + (ifS (eqVP X Y) + (PredVP (ConjNP x y) X) + (ConjS (PredVP x X) (PredVP y Y))) ; + fun ifS : Bool -> S -> S -> S ; -- if b then x else y + def + ifS True x _ = x ; + ifS False _ y = y ; + fun eqNP : NP -> NP -> Bool ; -- x == y + def + eqNP John John = True ; + eqNP Mary Mary = True ; + eqNP _ _ = False ; + fun eqVP : VP -> VP -> Bool ; -- X == Y + def + eqVP Run Run = True ; + eqVP Walk Walk = True ; + eqVP _ _ = False ; + cat Bool ; data True, False : Bool ; +} |
