blob: 33890fb89465f0370245aba11acdc92ae494b7af (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
param Num = Sg | Pl ;
param Gen = Masc | Fem ;
oper Agr = {g : Gen ; n : Num} ;
oper CN = {s : Num -> Str ; g : Gen} ;
oper NP = {s : Str ; a : Agr} ;
oper artDef : Gen -> Str = \g -> table {
(Masc) => "le" ;
(Fem) => "la"
} ! g ;
lin Voiture : CN = {
s = table {
(Sg) => "voiture" ;
(Pl) => "voitures"
} ;
g = Fem
} ;
lin Bus : CN = {
s = table {$x => "bus"} ;
g = Masc
} ;
lin Def : CN -> NP = \cn -> {
s = artDef cn.g ++ cn.s ! Sg ;
a = {g = cn.g ; n = Sg}
} ;
|