forked from GitHub/gf-rgl
fix type errors detected by the new type checker
This commit is contained in:
@@ -315,7 +315,7 @@ param
|
|||||||
|
|
||||||
--2 Transformations between parameter types
|
--2 Transformations between parameter types
|
||||||
|
|
||||||
oper Agr : Type = {g : Gender ; n : Number ; p : Person} ;
|
oper Agr : PType = {g : Gender ; n : Number ; p : Person} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
agrP3 : Number -> Agr = agrgP3 Neutr ;
|
agrP3 : Number -> Agr = agrgP3 Neutr ;
|
||||||
|
|||||||
@@ -19,7 +19,7 @@ param
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
-- AGRE = {g : Gender ; n : Number ; p : Person} ;
|
-- AGRE = {g : Gender ; n : Number ; p : Person} ;
|
||||||
Agre : Type = {g : Gender ; n : Number ; p : Person} ;
|
Agre : PType = {g : Gender ; n : Number ; p : Person} ;
|
||||||
agre : Gender -> Number -> Person -> Agre = \g,n,p -> {g = g ; n = n ; p = p} ;
|
agre : Gender -> Number -> Person -> Agre = \g,n,p -> {g = g ; n = n ; p = p} ;
|
||||||
|
|
||||||
agrFeatures : Agr -> Agre = \a -> case a of {Ag g n p => {g = g ; n = n ; p = p}} ;
|
agrFeatures : Agr -> Agre = \a -> case a of {Ag g n p => {g = g ; n = n ; p = p}} ;
|
||||||
|
|||||||
@@ -42,14 +42,14 @@ flags
|
|||||||
-- To abstract over gender names, we define the following identifiers.
|
-- To abstract over gender names, we define the following identifiers.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Gender : Type ;
|
Gender : PType ;
|
||||||
|
|
||||||
masculine : Gender ;
|
masculine : Gender ;
|
||||||
feminine : Gender ;
|
feminine : Gender ;
|
||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ;
|
Number : PType ;
|
||||||
|
|
||||||
singular : Number ;
|
singular : Number ;
|
||||||
plural : Number ;
|
plural : Number ;
|
||||||
|
|||||||
@@ -512,8 +512,8 @@ param
|
|||||||
|
|
||||||
-- IL2018-02: a whole lot of times we only need number and person, not gender
|
-- IL2018-02: a whole lot of times we only need number and person, not gender
|
||||||
-- maybe switch to PersAgr at some point and halve the number of fields
|
-- maybe switch to PersAgr at some point and halve the number of fields
|
||||||
oper PersAgr : Type = {n : Number ; p : Person} ;
|
oper PersAgr : PType = {n : Number ; p : Person} ;
|
||||||
oper Agr : Type = PersAgr ** {g : Gender} ;
|
oper Agr : PType = PersAgr ** {g : Gender} ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
pagr : Agr -> PersAgr = \agr -> { p = agr.p ; n = agr.n } ;
|
pagr : Agr -> PersAgr = \agr -> { p = agr.p ; n = agr.n } ;
|
||||||
|
|||||||
@@ -62,7 +62,7 @@ oper
|
|||||||
-- Adjectives --- could be made more compact by pressing comparison forms down to a few
|
-- Adjectives --- could be made more compact by pressing comparison forms down to a few
|
||||||
|
|
||||||
oper
|
oper
|
||||||
SAForm : Type = AForm ;
|
SAForm : PType = AForm ;
|
||||||
|
|
||||||
oper
|
oper
|
||||||
SAdj = {s : SAForm => Str ; h : Harmony} ;
|
SAdj = {s : SAForm => Str ; h : Harmony} ;
|
||||||
@@ -112,7 +112,7 @@ oper
|
|||||||
-- verbs
|
-- verbs
|
||||||
|
|
||||||
oper
|
oper
|
||||||
SVForm : Type = VForm ;
|
SVForm : PType = VForm ;
|
||||||
SVerb : Type = {s : SVForm => Str ; h : Harmony} ;
|
SVerb : Type = {s : SVForm => Str ; h : Harmony} ;
|
||||||
|
|
||||||
ollaSVerbForms : SVForm => Str = verbOlla.s ;
|
ollaSVerbForms : SVForm => Str = verbOlla.s ;
|
||||||
|
|||||||
@@ -40,14 +40,14 @@ resource ParadigmsFre =
|
|||||||
-- To abstract over gender names, we define the following identifiers.
|
-- To abstract over gender names, we define the following identifiers.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Gender : Type ;
|
Gender : PType ;
|
||||||
|
|
||||||
masculine : Gender ;
|
masculine : Gender ;
|
||||||
feminine : Gender ;
|
feminine : Gender ;
|
||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ; --%
|
Number : PType ; --%
|
||||||
|
|
||||||
singular : Number ; --%
|
singular : Number ; --%
|
||||||
plural : Number ; --%
|
plural : Number ; --%
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ resource ResGre = ParamX ** open Prelude in {
|
|||||||
|
|
||||||
oper
|
oper
|
||||||
|
|
||||||
AAgr : Type = {g : Gender ; n : Number} ;
|
AAgr : PType = {g : Gender ; n : Number} ;
|
||||||
|
|
||||||
VP = { v : Verb ; clit,clit2 : Str ; comp : Agr => Str ; isNeg : Bool ; voice : Voice ; aspect :Aspect} ;
|
VP = { v : Verb ; clit,clit2 : Str ; comp : Agr => Str ; isNeg : Bool ; voice : Voice ; aspect :Aspect} ;
|
||||||
|
|
||||||
|
|||||||
@@ -40,14 +40,14 @@ resource ParadigmsIta = BeschIta **
|
|||||||
-- To abstract over gender names, we define the following identifiers.
|
-- To abstract over gender names, we define the following identifiers.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Gender : Type ;
|
Gender : PType ;
|
||||||
|
|
||||||
masculine : Gender ;
|
masculine : Gender ;
|
||||||
feminine : Gender ;
|
feminine : Gender ;
|
||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ;
|
Number : PType ;
|
||||||
|
|
||||||
singular : Number ;
|
singular : Number ;
|
||||||
plural : Number ;
|
plural : Number ;
|
||||||
|
|||||||
@@ -72,9 +72,7 @@ concrete ConjunctionLat of Conjunction =
|
|||||||
|
|
||||||
-- BaseS : S -> S -> ListS
|
-- BaseS : S -> S -> ListS
|
||||||
BaseS x y = {
|
BaseS x y = {
|
||||||
s = \\c => { init = combineSentence x ; last = combineSentence y } ;
|
s = \\c => { init = combineSentence x ; last = combineSentence y }
|
||||||
p = y.p ;
|
|
||||||
t = y.t
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- ConsS : S -> ListS -> ListS
|
-- ConsS : S -> ListS -> ListS
|
||||||
@@ -83,9 +81,7 @@ concrete ConjunctionLat of Conjunction =
|
|||||||
ConsS s ss = {
|
ConsS s ss = {
|
||||||
s = \\co =>
|
s = \\co =>
|
||||||
{ init = \\s,a,d,v,c,o => coord co { init = (ss.s ! co).init ! s ! a ! d ! v ! c ! o ; last = (ss.s ! co).last ! s ! a ! d ! v ! c ! o } ;
|
{ init = \\s,a,d,v,c,o => coord co { init = (ss.s ! co).init ! s ! a ! d ! v ! c ! o ; last = (ss.s ! co).last ! s ! a ! d ! v ! c ! o } ;
|
||||||
last = combineSentence s } ;
|
last = combineSentence s }
|
||||||
p = s.p ;
|
|
||||||
t = s.t
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- BaseAdv : Adv -> Adv -> ListAdv
|
-- BaseAdv : Adv -> Adv -> ListAdv
|
||||||
@@ -137,7 +133,7 @@ concrete ConjunctionLat of Conjunction =
|
|||||||
|
|
||||||
--
|
--
|
||||||
lincat
|
lincat
|
||||||
[S] = { s : Coordinator => {init,last : SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str} ; p : Pol ; t : Tense } ; -- TO FIX
|
[S] = { s : Coordinator => {init,last : SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str} } ; -- TO FIX
|
||||||
[Adv] = { s: Coordinator => {init,last : Str}} ;
|
[Adv] = { s: Coordinator => {init,last : Str}} ;
|
||||||
[NP] = { s : Coordinator => {init,last : PronDropForm => AdvPos => DetPos => Case => Str} ; g : Gender ; n : Number ; p : Person ; isBase : Bool } ;
|
[NP] = { s : Coordinator => {init,last : PronDropForm => AdvPos => DetPos => Case => Str} ; g : Gender ; n : Number ; p : Person ; isBase : Bool } ;
|
||||||
[AP] = {s : Coordinator => {init,last : Agr => Str } } ;
|
[AP] = {s : Coordinator => {init,last : Agr => Str } } ;
|
||||||
|
|||||||
@@ -58,24 +58,24 @@ concrete ExtraLat of ExtraLatAbs =
|
|||||||
UttS_VInS s = { s = combineSentence s ! SAPreS ! APreV ! DPostN ! VInS ! CPostV ! SVO } ;
|
UttS_VInS s = { s = combineSentence s ! SAPreS ! APreV ! DPostN ! VInS ! CPostV ! SVO } ;
|
||||||
|
|
||||||
TestRCl t p cl = {
|
TestRCl t p cl = {
|
||||||
s = \\g,n => combineSentence (combineClause (cl.s ! g ! n) (lin Tense t) t.a (lin Pol p) VQFalse) ;
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
-- UseRCl_OSV : Temp -> Pol -> RCl -> RS ;
|
-- UseRCl_OSV : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl_OSV t p cl = {
|
UseRCl_OSV t p cl = {
|
||||||
s = \\g,n => combineSentence (combineClause (cl.s ! g ! n) (lin Tense t) t.a (lin Pol p) VQFalse) ! SAPreO ! APreV ! DPreN ! VReg ! CPostV ! OSV ;
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreO ! APreV ! DPreN ! VReg ! CPostV ! OSV ;
|
||||||
} ;
|
} ;
|
||||||
-- UseRCl_OVS : Temp -> Pol -> RCl -> RS ;
|
-- UseRCl_OVS : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl_OVS t p cl = {
|
UseRCl_OVS t p cl = {
|
||||||
s = \\g,n => combineSentence (combineClause (cl.s ! g ! n) (lin Tense t) t.a (lin Pol p) VQFalse) ! SAPreO ! APreV ! DPreN ! VReg ! CPostV ! OVS ; -- SAPreO APreV DPreN VReg CPostV OVS
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreO ! APreV ! DPreN ! VReg ! CPostV ! OVS ; -- SAPreO APreV DPreN VReg CPostV OVS
|
||||||
} ;
|
} ;
|
||||||
-- UseRCl_SOV : Temp -> Pol -> RCl -> RS ;
|
-- UseRCl_SOV : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl_SOV t p cl = {
|
UseRCl_SOV t p cl = {
|
||||||
s = \\g,n => combineSentence (combineClause (cl.s ! g ! n) (lin Tense t) t.a (lin Pol p) VQFalse) ! SAPreS ! APreV ! DPreN ! VReg ! CPostV ! SOV ;
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreS ! APreV ! DPreN ! VReg ! CPostV ! SOV ;
|
||||||
} ;
|
} ;
|
||||||
-- UseRCl_SVO : Temp -> Pol -> RCl -> RS ;
|
-- UseRCl_SVO : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl_SVO t p cl = {
|
UseRCl_SVO t p cl = {
|
||||||
s = \\g,n => combineSentence (combineClause (cl.s ! g ! n) (lin Tense t) t.a (lin Pol p) VQFalse) ! SAPreS ! APreV ! DPreN ! VReg ! CPostV ! SVO ;
|
s = \\g,n => combineSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SAPreS ! APreV ! DPreN ! VReg ! CPostV ! SVO ;
|
||||||
} ;
|
} ;
|
||||||
-- PrepNP_DPostN : Prep -> NP -> Adv ; -- in the house
|
-- PrepNP_DPostN : Prep -> NP -> Adv ; -- in the house
|
||||||
PrepNP_DPostN prep np =
|
PrepNP_DPostN prep np =
|
||||||
|
|||||||
@@ -21,15 +21,10 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in {
|
|||||||
compl = vp.compl ! Ag Masc ip.n Nom ; -- default gender masculine
|
compl = vp.compl ! Ag Masc ip.n Nom ; -- default gender masculine
|
||||||
det = { s, sp = \\_ => [] ; n = ip.n } ;
|
det = { s, sp = \\_ => [] ; n = ip.n } ;
|
||||||
} ;
|
} ;
|
||||||
-- let qcl = mkQuestion { s = ip.s ! Nom } ( mkClause emptyNP vp )
|
|
||||||
-- in {s = \\t,a,b,qd => qcl.s ! t ! a ! b ! qd} ;
|
|
||||||
|
|
||||||
-- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love
|
-- QuestSlash : IP -> ClSlash -> QCl ; -- whom does John love
|
||||||
-- TO FIX
|
-- TO FIX
|
||||||
|
|
||||||
-- QuestSlash ip slash =
|
|
||||||
-- mkQuestion (ss ( ip.s ! Acc) ) slash ;
|
|
||||||
|
|
||||||
-- QuestIAdv : IAdv -> Cl -> QCl
|
-- QuestIAdv : IAdv -> Cl -> QCl
|
||||||
QuestIAdv iadv cl = cl ** { q = iadv.s } ;
|
QuestIAdv iadv cl = cl ** { q = iadv.s } ;
|
||||||
|
|
||||||
|
|||||||
@@ -1329,8 +1329,6 @@ oper
|
|||||||
{
|
{
|
||||||
s,o,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
|
s,o,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb
|
||||||
v : AdvPos => Str ;
|
v : AdvPos => Str ;
|
||||||
t : C.Tense ; -- tense marker
|
|
||||||
p : C.Pol ; -- polarity marker
|
|
||||||
sadv : Str ; -- sentence adverb¡
|
sadv : Str ; -- sentence adverb¡
|
||||||
det : { s , sp : Case => Str } ;
|
det : { s , sp : Case => Str } ;
|
||||||
compl : Str -- verb complement
|
compl : Str -- verb complement
|
||||||
@@ -1344,7 +1342,7 @@ oper
|
|||||||
compl : Str ;
|
compl : Str ;
|
||||||
neg : Polarity => AdvPos => Str ;
|
neg : Polarity => AdvPos => Str ;
|
||||||
adv : Str } ;
|
adv : Str } ;
|
||||||
QClause = {s : C.Tense => Anteriority => C.Pol => QForm => Str} ;
|
QClause = {s : Tense => Anteriority => Polarity => QForm => Str} ;
|
||||||
|
|
||||||
mkClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
mkClause : NounPhrase -> VerbPhrase -> Clause = \np,vp ->
|
||||||
let
|
let
|
||||||
@@ -1390,14 +1388,12 @@ oper
|
|||||||
adv = ""
|
adv = ""
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
combineClause : Clause -> C.Tense -> Anteriority -> C.Pol -> VQForm -> Sentence = \cl,tense,anter,pol,vqf ->
|
combineClause : Str -> Clause -> Tense -> Anteriority -> Polarity -> VQForm -> Sentence = \params,cl,tense,anter,pol,vqf ->
|
||||||
cl **
|
cl **
|
||||||
{
|
{
|
||||||
v = \\advpos => cl.v ! tense.t ! anter ! vqf ! advpos ;
|
v = \\advpos => params ++ cl.v ! tense ! anter ! vqf ! advpos ;
|
||||||
neg = cl.neg ! pol.p ;
|
neg = cl.neg ! pol ;
|
||||||
sadv = cl.adv ;
|
sadv = cl.adv
|
||||||
t = tense ;
|
|
||||||
p = pol ;
|
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
combineSentence : Sentence -> ( SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str ) = \s ->
|
combineSentence : Sentence -> ( SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str ) = \s ->
|
||||||
@@ -1420,37 +1416,31 @@ oper
|
|||||||
-- complosp is the position of the verb complement
|
-- complosp is the position of the verb complement
|
||||||
\\sadvpos,advpos,detpos,verbpos,complpos,order => case order of {
|
\\sadvpos,advpos,detpos,verbpos,complpos,order => case order of {
|
||||||
SVO =>
|
SVO =>
|
||||||
s.t.s ++ s.p.s ++
|
|
||||||
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ++
|
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ++
|
||||||
advpreneg sadvpos ++ s.neg ! advpos ++
|
advpreneg sadvpos ++ s.neg ! advpos ++
|
||||||
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
||||||
advpreo sadvpos ++ s.o ! advpos;
|
advpreo sadvpos ++ s.o ! advpos;
|
||||||
VSO =>
|
VSO =>
|
||||||
s.t.s ++ s.p.s ++
|
|
||||||
advpreneg sadvpos ++ s.neg ! advpos ++
|
advpreneg sadvpos ++ s.neg ! advpos ++
|
||||||
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
||||||
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ++
|
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ++
|
||||||
advpreo sadvpos ++ s.o ! advpos;
|
advpreo sadvpos ++ s.o ! advpos;
|
||||||
VOS =>
|
VOS =>
|
||||||
s.t.s ++ s.p.s ++
|
|
||||||
advpreneg sadvpos ++ s.neg ! advpos ++
|
advpreneg sadvpos ++ s.neg ! advpos ++
|
||||||
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
||||||
advpreo sadvpos ++ s.o ! advpos ++
|
advpreo sadvpos ++ s.o ! advpos ++
|
||||||
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ;
|
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ;
|
||||||
OSV =>
|
OSV =>
|
||||||
s.t.s ++ s.p.s ++
|
|
||||||
advpreo sadvpos ++ s.o ! advpos ++
|
advpreo sadvpos ++ s.o ! advpos ++
|
||||||
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom++
|
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom++
|
||||||
advpreneg sadvpos ++ s.neg ! advpos ++
|
advpreneg sadvpos ++ s.neg ! advpos ++
|
||||||
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ;
|
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ;
|
||||||
OVS =>
|
OVS =>
|
||||||
s.t.s ++ s.p.s ++
|
|
||||||
advpreo sadvpos ++ s.o ! advpos ++
|
advpreo sadvpos ++ s.o ! advpos ++
|
||||||
advpreneg sadvpos ++ s.neg ! advpos ++
|
advpreneg sadvpos ++ s.neg ! advpos ++
|
||||||
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++
|
||||||
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ;
|
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ;
|
||||||
SOV =>
|
SOV =>
|
||||||
s.t.s ++ s.p.s ++
|
|
||||||
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ++
|
advpres sadvpos ++ (detpren detpos).s ! Nom ++ s.s ! advpos ++ (verbins verbpos) ! advpos ++ (detpostn detpos).s ! Nom ++ (detpren detpos).sp ! Nom ++
|
||||||
advpreo sadvpos ++ s.o ! advpos ++
|
advpreo sadvpos ++ s.o ! advpos ++
|
||||||
advpreneg sadvpos ++ s.neg ! advpos ++
|
advpreneg sadvpos ++ s.neg ! advpos ++
|
||||||
@@ -1459,14 +1449,6 @@ oper
|
|||||||
|
|
||||||
defaultSentence : Sentence -> Order => Str = \s -> combineSentence s ! SAPreS ! APreV ! DPreN ! VReg ! CPreV ;
|
defaultSentence : Sentence -> Order => Str = \s -> combineSentence s ! SAPreS ! APreV ! DPreN ! VReg ! CPreV ;
|
||||||
|
|
||||||
-- questions
|
|
||||||
mkQuestion : SS -> Clause -> QClause = \ss,cl -> {
|
|
||||||
s = \\tense,anter,pol,form => case form of {
|
|
||||||
QDir => ss.s ++ (defaultSentence (combineClause cl tense anter pol VQFalse)) ! OVS ;
|
|
||||||
QIndir => ss.s ++ (combineSentence (combineClause cl tense anter pol VQFalse)) ! SAPreO ! APreO ! DPreN ! VReg ! CPreV ! OSV
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
negation : Polarity -> Str = \p -> case p of {
|
negation : Polarity -> Str = \p -> case p of {
|
||||||
Pos => [] ;
|
Pos => [] ;
|
||||||
Neg => "non"
|
Neg => "non"
|
||||||
|
|||||||
@@ -45,12 +45,12 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
|
|||||||
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
-- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr
|
||||||
--
|
--
|
||||||
UseCl t p cl = -- Temp -> Pol-> Cl -> S
|
UseCl t p cl = -- Temp -> Pol-> Cl -> S
|
||||||
(combineClause cl (lin Tense t) t.a (lin Pol p) VQFalse) ;
|
(combineClause (t.s++p.s) cl t.t t.a p.p VQFalse) ;
|
||||||
|
|
||||||
-- UseQCl : Temp -> Pol -> QCl -> QS -- maybe use mkQuestion
|
-- UseQCl : Temp -> Pol -> QCl -> QS
|
||||||
UseQCl t p cl =
|
UseQCl t p cl =
|
||||||
{
|
{
|
||||||
s = let qs = combineClause cl t t.a p VQTrue in
|
s = let qs = combineClause (t.s++p.s) cl t.t t.a p.p VQTrue in
|
||||||
\\q => case q of {
|
\\q => case q of {
|
||||||
QDir => cl.q ++ defaultSentence qs ! SVO ; -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV ++ cl.o ! PreV ;
|
QDir => cl.q ++ defaultSentence qs ! SVO ; -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV ++ cl.o ! PreV ;
|
||||||
QIndir => cl.q ++ defaultSentence qs ! SOV -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.o ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV
|
QIndir => cl.q ++ defaultSentence qs ! SOV -- t.s ++ p.s ++ cl.q ++ cl.s ! PreV ++ cl.o ! PreV ++ cl.v ! t.t ! t.a ! VQTrue ! PreV ! CPostV
|
||||||
@@ -58,7 +58,7 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in {
|
|||||||
} ;
|
} ;
|
||||||
-- UseRCl : Temp -> Pol -> RCl -> RS ;
|
-- UseRCl : Temp -> Pol -> RCl -> RS ;
|
||||||
UseRCl t p cl = {
|
UseRCl t p cl = {
|
||||||
s = \\g,n => defaultSentence (combineClause (cl.s ! g ! n) (lin Tense t) t.a (lin Pol p) VQFalse) ! SOV ;
|
s = \\g,n => defaultSentence (combineClause (t.s++p.s) (cl.s ! g ! n) t.t t.a p.p VQFalse) ! SOV ;
|
||||||
-- s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! r ;
|
-- s = \\r => t.s ++ p.s ++ cl.s ! t.t ! t.a ! ctr p.p ! r ;
|
||||||
-- c = cl.c
|
-- c = cl.c
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in {
|
|||||||
if_then_else Definiteness b Definite Indefinite ;
|
if_then_else Definiteness b Definite Indefinite ;
|
||||||
|
|
||||||
-- Agreement system corrected based on comments by [AZ]
|
-- Agreement system corrected based on comments by [AZ]
|
||||||
Agr : Type = { n : Number ; p : Person ; g : Gender } ;
|
Agr : PType = { n : Number ; p : Person ; g : Gender } ;
|
||||||
|
|
||||||
-- Make Agr from raw ingredients
|
-- Make Agr from raw ingredients
|
||||||
mkAgr : Number -> Person -> Gender -> Agr = \n,p,g -> {n = n ; p = p ; g = g} ;
|
mkAgr : Number -> Person -> Gender -> Agr = \n,p,g -> {n = n ; p = p ; g = g} ;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ resource ParadigmsPor =
|
|||||||
-- To abstract over gender names, we define the following identifiers.
|
-- To abstract over gender names, we define the following identifiers.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Gender : Type ;
|
Gender : PType ;
|
||||||
Gender = MorphoPor.Gender ;
|
Gender = MorphoPor.Gender ;
|
||||||
|
|
||||||
masculine, male : Gender ;
|
masculine, male : Gender ;
|
||||||
@@ -57,7 +57,7 @@ oper
|
|||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ;
|
Number : PType ;
|
||||||
Number = MorphoPor.Number ;
|
Number = MorphoPor.Number ;
|
||||||
|
|
||||||
singular : Number ;
|
singular : Number ;
|
||||||
|
|||||||
@@ -112,9 +112,9 @@ param
|
|||||||
-- Agreement of adjectives, verb phrases, relative pronouns, and predeterminers.
|
-- Agreement of adjectives, verb phrases, relative pronouns, and predeterminers.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
AAgr : Type = {g : Gender ; n : Number} ;
|
AAgr : PType = {g : Gender ; n : Number} ;
|
||||||
|
|
||||||
Agr : Type = {g : Gender ; n : Number ; p : Person} ;
|
Agr : PType = {g : Gender ; n : Number ; p : Person} ;
|
||||||
|
|
||||||
complAgr : Agr -> {g : Gender ; n : Number} = \a -> {g = a.g ; n = a.n} ;
|
complAgr : Agr -> {g : Gender ; n : Number} = \a -> {g = a.g ; n = a.n} ;
|
||||||
|
|
||||||
|
|||||||
@@ -504,11 +504,11 @@ oper
|
|||||||
|
|
||||||
-- for relatives
|
-- for relatives
|
||||||
|
|
||||||
AAgr : Type = {g : Gender ; n : Number} ;
|
AAgr : PType = {g : Gender ; n : Number} ;
|
||||||
|
|
||||||
-- for agreement between subject and predicate
|
-- for agreement between subject and predicate
|
||||||
|
|
||||||
Agr : Type = AAgr ** {p : Person} ;
|
Agr : PType = AAgr ** {p : Person} ;
|
||||||
|
|
||||||
|
|
||||||
-- clause building function :
|
-- clause building function :
|
||||||
|
|||||||
@@ -175,7 +175,6 @@ oper
|
|||||||
----2 Pronouns
|
----2 Pronouns
|
||||||
--PronForm = {s:Pronoun => Str};
|
--PronForm = {s:Pronoun => Str};
|
||||||
|
|
||||||
DemonPronForm = {s:DemPronForm => Str};
|
|
||||||
mkDemonPronForm : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16:Str) -> DemPronForm =
|
mkDemonPronForm : (x1,x2,x3,x4,x5,x6,x7,x8,x9,x10,x11,x12,x13,x14,x15,x16:Str) -> DemPronForm =
|
||||||
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16 -> {
|
\y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16 -> {
|
||||||
s = table {
|
s = table {
|
||||||
|
|||||||
@@ -894,7 +894,6 @@ oper
|
|||||||
msloc,
|
msloc,
|
||||||
msins, fsins,
|
msins, fsins,
|
||||||
ampnom, fpnom, -- mpacc = fpacc = fpnom
|
ampnom, fpnom, -- mpacc = fpacc = fpnom
|
||||||
pgen,
|
|
||||||
pdat, -- NOT msins like AdjForms
|
pdat, -- NOT msins like AdjForms
|
||||||
pins : Str
|
pins : Str
|
||||||
} ;
|
} ;
|
||||||
|
|||||||
@@ -40,14 +40,14 @@ resource ParadigmsSpa =
|
|||||||
-- To abstract over gender names, we define the following identifiers.
|
-- To abstract over gender names, we define the following identifiers.
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Gender : Type ;
|
Gender : PType ;
|
||||||
|
|
||||||
masculine : Gender ;
|
masculine : Gender ;
|
||||||
feminine : Gender ;
|
feminine : Gender ;
|
||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ;
|
Number : PType ;
|
||||||
|
|
||||||
singular : Number ;
|
singular : Number ;
|
||||||
plural : Number ;
|
plural : Number ;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ resource ParadigmsSwa = open
|
|||||||
in {
|
in {
|
||||||
|
|
||||||
oper
|
oper
|
||||||
Gender : Type ;
|
Gender : PType ;
|
||||||
a_wa : Gender ; --m-wa
|
a_wa : Gender ; --m-wa
|
||||||
u_i : Gender ; --m-mi
|
u_i : Gender ; --m-mi
|
||||||
li_ya : Gender ; --ji-ma
|
li_ya : Gender ; --ji-ma
|
||||||
@@ -26,14 +26,14 @@ oper
|
|||||||
|
|
||||||
-- To abstract over number names, we define the following.
|
-- To abstract over number names, we define the following.
|
||||||
|
|
||||||
Number : Type ;
|
Number : PType ;
|
||||||
|
|
||||||
singular : Number ;
|
singular : Number ;
|
||||||
plural : Number ;
|
plural : Number ;
|
||||||
|
|
||||||
-- To abstract over case names, we define the following.
|
-- To abstract over case names, we define the following.
|
||||||
|
|
||||||
Case : Type ; --%
|
Case : PType ; --%
|
||||||
|
|
||||||
nominative : Case ; --%
|
nominative : Case ; --%
|
||||||
locative : Case ; --%
|
locative : Case ; --%
|
||||||
|
|||||||
Reference in New Issue
Block a user