From e7439d65b0e153434d3acc07df6e2a0972ee79ca Mon Sep 17 00:00:00 2001 From: aarne Date: Tue, 11 Jan 2011 15:46:43 +0000 Subject: gf-book web page index and toc --- gf-book/examples/chapter6/Aggregation.gf | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 gf-book/examples/chapter6/Aggregation.gf (limited to 'gf-book/examples/chapter6/Aggregation.gf') 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 ; +} -- cgit v1.2.3