From 76ba03b545600054176612201de78dca16eb65e1 Mon Sep 17 00:00:00 2001 From: aarne Date: Mon, 22 Nov 2010 12:55:37 +0000 Subject: started a subdir for the book --- book/examples/chapter6/Aggregation.gf | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 book/examples/chapter6/Aggregation.gf (limited to 'book/examples/chapter6/Aggregation.gf') diff --git a/book/examples/chapter6/Aggregation.gf b/book/examples/chapter6/Aggregation.gf new file mode 100644 index 000000000..28cbd39ef --- /dev/null +++ b/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