diff --git a/src/afrikaans/ResAfr.gf b/src/afrikaans/ResAfr.gf index 560a17c53..1aee76565 100644 --- a/src/afrikaans/ResAfr.gf +++ b/src/afrikaans/ResAfr.gf @@ -315,7 +315,7 @@ param --2 Transformations between parameter types - oper Agr : Type = {g : Gender ; n : Number ; p : Person} ; + oper Agr : PType = {g : Gender ; n : Number ; p : Person} ; oper agrP3 : Number -> Agr = agrgP3 Neutr ; diff --git a/src/bantu/DiffBantu.gf b/src/bantu/DiffBantu.gf index 03468dec9..687503917 100644 --- a/src/bantu/DiffBantu.gf +++ b/src/bantu/DiffBantu.gf @@ -19,7 +19,7 @@ param oper -- 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} ; agrFeatures : Agr -> Agre = \a -> case a of {Ag g n p => {g = g ; n = n ; p = p}} ; diff --git a/src/catalan/ParadigmsCat.gf b/src/catalan/ParadigmsCat.gf index 62713fd79..2e4c97448 100644 --- a/src/catalan/ParadigmsCat.gf +++ b/src/catalan/ParadigmsCat.gf @@ -42,14 +42,14 @@ flags -- To abstract over gender names, we define the following identifiers. oper - Gender : Type ; + Gender : PType ; masculine : Gender ; feminine : Gender ; -- To abstract over number names, we define the following. - Number : Type ; + Number : PType ; singular : Number ; plural : Number ; diff --git a/src/dutch/ResDut.gf b/src/dutch/ResDut.gf index 1996380f1..6a980920a 100644 --- a/src/dutch/ResDut.gf +++ b/src/dutch/ResDut.gf @@ -512,8 +512,8 @@ param -- 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 - oper PersAgr : Type = {n : Number ; p : Person} ; - oper Agr : Type = PersAgr ** {g : Gender} ; + oper PersAgr : PType = {n : Number ; p : Person} ; + oper Agr : PType = PersAgr ** {g : Gender} ; oper pagr : Agr -> PersAgr = \agr -> { p = agr.p ; n = agr.n } ; diff --git a/src/finnish/StemFin.gf b/src/finnish/StemFin.gf index 5237e55bf..5e02a9ad1 100644 --- a/src/finnish/StemFin.gf +++ b/src/finnish/StemFin.gf @@ -62,7 +62,7 @@ oper -- Adjectives --- could be made more compact by pressing comparison forms down to a few oper - SAForm : Type = AForm ; + SAForm : PType = AForm ; oper SAdj = {s : SAForm => Str ; h : Harmony} ; @@ -112,7 +112,7 @@ oper -- verbs oper - SVForm : Type = VForm ; + SVForm : PType = VForm ; SVerb : Type = {s : SVForm => Str ; h : Harmony} ; ollaSVerbForms : SVForm => Str = verbOlla.s ; diff --git a/src/french/ParadigmsFre.gf b/src/french/ParadigmsFre.gf index 8310ac1da..cd54e63f0 100644 --- a/src/french/ParadigmsFre.gf +++ b/src/french/ParadigmsFre.gf @@ -40,14 +40,14 @@ resource ParadigmsFre = -- To abstract over gender names, we define the following identifiers. oper - Gender : Type ; + Gender : PType ; masculine : Gender ; feminine : Gender ; -- To abstract over number names, we define the following. - Number : Type ; --% + Number : PType ; --% singular : Number ; --% plural : Number ; --% diff --git a/src/greek/ResGre.gf b/src/greek/ResGre.gf index 45d1d79da..7a8a26cd7 100644 --- a/src/greek/ResGre.gf +++ b/src/greek/ResGre.gf @@ -39,7 +39,7 @@ resource ResGre = ParamX ** open Prelude in { 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} ; @@ -1826,4 +1826,4 @@ resource ResGre = ParamX ** open Prelude in { - \ No newline at end of file + diff --git a/src/italian/ParadigmsIta.gf b/src/italian/ParadigmsIta.gf index 36165db94..f3efde474 100644 --- a/src/italian/ParadigmsIta.gf +++ b/src/italian/ParadigmsIta.gf @@ -40,14 +40,14 @@ resource ParadigmsIta = BeschIta ** -- To abstract over gender names, we define the following identifiers. oper - Gender : Type ; + Gender : PType ; masculine : Gender ; feminine : Gender ; -- To abstract over number names, we define the following. - Number : Type ; + Number : PType ; singular : Number ; plural : Number ; diff --git a/src/latin/ConjunctionLat.gf b/src/latin/ConjunctionLat.gf index 8fc2b5400..dad07563f 100644 --- a/src/latin/ConjunctionLat.gf +++ b/src/latin/ConjunctionLat.gf @@ -72,9 +72,7 @@ concrete ConjunctionLat of Conjunction = -- BaseS : S -> S -> ListS BaseS x y = { - s = \\c => { init = combineSentence x ; last = combineSentence y } ; - p = y.p ; - t = y.t + s = \\c => { init = combineSentence x ; last = combineSentence y } } ; -- ConsS : S -> ListS -> ListS @@ -83,11 +81,9 @@ concrete ConjunctionLat of Conjunction = ConsS s ss = { 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 } ; - last = combineSentence s } ; - p = s.p ; - t = s.t + last = combineSentence s } } ; - + -- BaseAdv : Adv -> Adv -> ListAdv BaseAdv x y = { @@ -137,7 +133,7 @@ concrete ConjunctionLat of Conjunction = -- 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}} ; [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 } } ; diff --git a/src/latin/ExtraLat.gf b/src/latin/ExtraLat.gf index 495426115..f188b9f7f 100644 --- a/src/latin/ExtraLat.gf +++ b/src/latin/ExtraLat.gf @@ -58,24 +58,24 @@ concrete ExtraLat of ExtraLatAbs = UttS_VInS s = { s = combineSentence s ! SAPreS ! APreV ! DPostN ! VInS ! CPostV ! SVO } ; 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 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 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 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 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 = diff --git a/src/latin/QuestionLat.gf b/src/latin/QuestionLat.gf index 75ab28dc5..5888daf71 100644 --- a/src/latin/QuestionLat.gf +++ b/src/latin/QuestionLat.gf @@ -21,14 +21,9 @@ concrete QuestionLat of Question = CatLat ** open ResLat, IrregLat, Prelude in { compl = vp.compl ! Ag Masc ip.n Nom ; -- default gender masculine 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 -- TO FIX - - -- QuestSlash ip slash = - -- mkQuestion (ss ( ip.s ! Acc) ) slash ; -- QuestIAdv : IAdv -> Cl -> QCl QuestIAdv iadv cl = cl ** { q = iadv.s } ; diff --git a/src/latin/ResLat.gf b/src/latin/ResLat.gf index c284e847c..67d55879a 100644 --- a/src/latin/ResLat.gf +++ b/src/latin/ResLat.gf @@ -1323,19 +1323,17 @@ oper compl = vp.compl ; adv = vp.adv ++ (a.s ! Posit) } ; - + -- clauses Sentence = { s,o,neg : AdvPos => Str ; -- Subject, verbphrase, object and negation particle plus potential adverb v : AdvPos => Str ; - t : C.Tense ; -- tense marker - p : C.Pol ; -- polarity marker sadv : Str ; -- sentence adverbĀ” det : { s , sp : Case => Str } ; compl : Str -- verb complement } ; - + Clause = {s : AdvPos => Str ; o : AdvPos => Str ; @@ -1344,7 +1342,7 @@ oper compl : Str ; neg : Polarity => AdvPos => 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 -> let @@ -1390,14 +1388,12 @@ oper 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 ** { - v = \\advpos => cl.v ! tense.t ! anter ! vqf ! advpos ; - neg = cl.neg ! pol.p ; - sadv = cl.adv ; - t = tense ; - p = pol ; + v = \\advpos => params ++ cl.v ! tense ! anter ! vqf ! advpos ; + neg = cl.neg ! pol ; + sadv = cl.adv } ; combineSentence : Sentence -> ( SAdvPos => AdvPos => DetPos => VPos => ComplPos => Order => Str ) = \s -> @@ -1420,37 +1416,31 @@ oper -- complosp is the position of the verb complement \\sadvpos,advpos,detpos,verbpos,complpos,order => case order of { 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 ++ advpreneg sadvpos ++ s.neg ! advpos ++ advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++ advpreo sadvpos ++ s.o ! advpos; VSO => - s.t.s ++ s.p.s ++ advpreneg sadvpos ++ s.neg ! advpos ++ 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 ++ advpreo sadvpos ++ s.o ! advpos; VOS => - s.t.s ++ s.p.s ++ advpreneg sadvpos ++ s.neg ! advpos ++ advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ++ 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 ; OSV => - s.t.s ++ s.p.s ++ 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++ advpreneg sadvpos ++ s.neg ! advpos ++ advprev sadvpos ++ (complprev complpos) ++ (verbreg verbpos) ! advpos ++ (complpostv complpos) ; OVS => - s.t.s ++ s.p.s ++ advpreo sadvpos ++ s.o ! advpos ++ advpreneg sadvpos ++ s.neg ! advpos ++ 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 ; 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 ++ advpreo sadvpos ++ s.o ! advpos ++ advpreneg sadvpos ++ s.neg ! advpos ++ @@ -1458,15 +1448,7 @@ oper } ; 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 { Pos => [] ; Neg => "non" diff --git a/src/latin/SentenceLat.gf b/src/latin/SentenceLat.gf index 4dc5e164f..a88a4d6e6 100644 --- a/src/latin/SentenceLat.gf +++ b/src/latin/SentenceLat.gf @@ -45,12 +45,12 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in { -- EmbedVP vp = {s = infVP False vp (agrP3 Sg)} ; --- agr -- 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 = { - 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 { 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 @@ -58,7 +58,7 @@ concrete SentenceLat of Sentence = CatLat ** open Prelude, ResLat in { } ; -- UseRCl : Temp -> Pol -> RCl -> RS ; 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 ; -- c = cl.c } ; diff --git a/src/maltese/ResMlt.gf b/src/maltese/ResMlt.gf index 8fc49a55d..291161db6 100644 --- a/src/maltese/ResMlt.gf +++ b/src/maltese/ResMlt.gf @@ -33,7 +33,7 @@ resource ResMlt = ParamX ** open Prelude, Predef, Maybe in { if_then_else Definiteness b Definite Indefinite ; -- 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 mkAgr : Number -> Person -> Gender -> Agr = \n,p,g -> {n = n ; p = p ; g = g} ; diff --git a/src/portuguese/ParadigmsPor.gf b/src/portuguese/ParadigmsPor.gf index fe1fbd934..a26425be1 100644 --- a/src/portuguese/ParadigmsPor.gf +++ b/src/portuguese/ParadigmsPor.gf @@ -46,7 +46,7 @@ resource ParadigmsPor = -- To abstract over gender names, we define the following identifiers. oper - Gender : Type ; + Gender : PType ; Gender = MorphoPor.Gender ; masculine, male : Gender ; @@ -57,7 +57,7 @@ oper -- To abstract over number names, we define the following. - Number : Type ; + Number : PType ; Number = MorphoPor.Number ; singular : Number ; diff --git a/src/romance/CommonRomance.gf b/src/romance/CommonRomance.gf index eb751a112..1298e1dad 100644 --- a/src/romance/CommonRomance.gf +++ b/src/romance/CommonRomance.gf @@ -112,9 +112,9 @@ param -- Agreement of adjectives, verb phrases, relative pronouns, and predeterminers. 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} ; diff --git a/src/romanian/ResRon.gf b/src/romanian/ResRon.gf index 0057a078f..fbb5bfa69 100644 --- a/src/romanian/ResRon.gf +++ b/src/romanian/ResRon.gf @@ -504,11 +504,11 @@ oper -- for relatives - AAgr : Type = {g : Gender ; n : Number} ; + AAgr : PType = {g : Gender ; n : Number} ; -- for agreement between subject and predicate - Agr : Type = AAgr ** {p : Person} ; + Agr : PType = AAgr ** {p : Person} ; -- clause building function : diff --git a/src/sindhi/MorphoSnd.gf b/src/sindhi/MorphoSnd.gf index 3415e07be..2efe97d62 100644 --- a/src/sindhi/MorphoSnd.gf +++ b/src/sindhi/MorphoSnd.gf @@ -175,7 +175,6 @@ oper ----2 Pronouns --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 = \y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16 -> { s = table { diff --git a/src/slovak/ResSlo.gf b/src/slovak/ResSlo.gf index ba5f59f18..c6ea60431 100644 --- a/src/slovak/ResSlo.gf +++ b/src/slovak/ResSlo.gf @@ -894,7 +894,6 @@ oper msloc, msins, fsins, ampnom, fpnom, -- mpacc = fpacc = fpnom - pgen, pdat, -- NOT msins like AdjForms pins : Str } ; diff --git a/src/spanish/ParadigmsSpa.gf b/src/spanish/ParadigmsSpa.gf index d2ac452d2..81a98f838 100644 --- a/src/spanish/ParadigmsSpa.gf +++ b/src/spanish/ParadigmsSpa.gf @@ -40,14 +40,14 @@ resource ParadigmsSpa = -- To abstract over gender names, we define the following identifiers. oper - Gender : Type ; + Gender : PType ; masculine : Gender ; feminine : Gender ; -- To abstract over number names, we define the following. - Number : Type ; + Number : PType ; singular : Number ; plural : Number ; diff --git a/src/swahili/ParadigmsSwa.gf b/src/swahili/ParadigmsSwa.gf index 0e53099f3..8584e99ca 100644 --- a/src/swahili/ParadigmsSwa.gf +++ b/src/swahili/ParadigmsSwa.gf @@ -9,7 +9,7 @@ resource ParadigmsSwa = open in { oper - Gender : Type ; + Gender : PType ; a_wa : Gender ; --m-wa u_i : Gender ; --m-mi li_ya : Gender ; --ji-ma @@ -26,14 +26,14 @@ oper -- To abstract over number names, we define the following. - Number : Type ; + Number : PType ; singular : Number ; plural : Number ; -- To abstract over case names, we define the following. - Case : Type ; --% + Case : PType ; --% nominative : Case ; --% locative : Case ; --%