forked from GitHub/gf-core
gf-book web page index and toc
This commit is contained in:
33
gf-book/examples/chapter6/Aggregation.gf
Normal file
33
gf-book/examples/chapter6/Aggregation.gf
Normal file
@@ -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 ;
|
||||
}
|
||||
Reference in New Issue
Block a user