diff --git a/src/polish/AdjectiveMorphoPol.gf b/src/polish/AdjectiveMorphoPol.gf index 0c389f41b..cbee1e24c 100644 --- a/src/polish/AdjectiveMorphoPol.gf +++ b/src/polish/AdjectiveMorphoPol.gf @@ -6,7 +6,7 @@ -- Adam Slaski, 2009 -resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { +resource AdjectiveMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef) in { flags coding=utf8; @@ -116,8 +116,8 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { oper model_comp : Str -> adj11forms = \comp -> model4 comp ((Predef.tk 2 comp)+"i"); - oper mkAForms : adj11forms -> Str -> Adj = - \pos, comp -> { + oper mkAForms : adj11forms -> Str -> A = + \pos, comp -> lin A { pos = pos; comp = model_comp comp; super = model_comp ("naj"+comp) ; @@ -127,9 +127,9 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { }; oper mkA = overload { - mkA : adj11forms -> Adj = + mkA : adj11forms -> A = \pos -> mkAForms pos ("bardziej" ++ pos.s1) ; - mkA : adj11forms -> Str -> Adj = mkAForms ; + mkA : adj11forms -> Str -> A = mkAForms ; } ; oper guess_model : Str -> adj11forms = \form -> @@ -167,8 +167,8 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { -- oper for simple forms oper mkRegAdj = overload { - mkRegAdj : Str -> Str -> Str -> Str -> Adj = - \pos, comp, advpos, advcomp -> { + mkRegAdj : Str -> Str -> Str -> Str -> A = + \pos, comp, advpos, advcomp -> lin A { pos = guess_model pos; comp = model_comp comp; super = model_comp ("naj" + comp); @@ -176,8 +176,8 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { advcomp = advcomp; advsuper = "naj" + advcomp; }; - mkRegAdj : Str -> Str -> Adj = - \pos, comp -> { + mkRegAdj : Str -> Str -> A = + \pos, comp -> lin A { pos = guess_model pos; comp = model_comp comp; super = model_comp ("naj" + comp); @@ -188,8 +188,8 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { }; oper mkCompAdj = overload { - mkCompAdj : Str -> Str -> Adj = - \pos, advpos -> { + mkCompAdj : Str -> Str -> A = + \pos, advpos -> lin A { pos = guess_model pos; comp = guess_model ("bardziej" ++ pos); super = guess_model ("najbardziej" ++ pos); @@ -197,8 +197,8 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { advcomp = ("bardziej" ++ advpos); advsuper = ("najbardziej" ++ advpos); }; - mkCompAdj : Str -> Adj = - \pos -> { + mkCompAdj : Str -> A = + \pos -> lin A { pos = guess_model pos; comp = guess_model ("bardziej" ++ pos); super = guess_model ("najbardziej" ++ pos); @@ -207,12 +207,8 @@ resource AdjectiveMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { advsuper = "["++pos ++ [": the adverb superlative form does not exist]"] }; }; - - addComplToAdj : Adj -> Str -> Case -> (Adj ** { c:Complement }); - addComplToAdj a s c = { pos = a.pos; comp=a.comp; super=a.super; - advpos=a.advpos; advcomp=a.advcomp; advsuper=a.advsuper; - c = mkCompl s c - }; + addComplToAdj : A -> Str -> Case -> A2 ; + addComplToAdj a s c = a ** {c = mkCompl s c } ; } diff --git a/src/polish/CatPol.gf b/src/polish/CatPol.gf index 031ea35d5..702952fe0 100644 --- a/src/polish/CatPol.gf +++ b/src/polish/CatPol.gf @@ -113,11 +113,11 @@ concrete CatPol of Cat = CommonX - [CAdv] ** open ResPol, Prelude, (R = ParamX) -- Substantives moreover have an inherent gender. - N = CommNoun; + N = Noun; - N2 = CommNoun2; + N2 = Noun ** { c : Complement } ; - N3 = CommNoun3;-- ** { c, c2 : Complement } ; + N3 = Noun ** { c1, c2 : Complement } ; GN, SN, PN = NounPhrase; diff --git a/src/polish/MorphoPol.gf b/src/polish/MorphoPol.gf index 5ffcc93d1..776de2ac9 100644 --- a/src/polish/MorphoPol.gf +++ b/src/polish/MorphoPol.gf @@ -8,11 +8,10 @@ -- Description of the Polish morphology resource MorphoPol = - ResPol, VerbMorphoPol, PronounMorphoPol, AdjectiveMorphoPol, - NounMorphoPol ** { + NounMorphoPol ** open CatPol, ResPol in { flags coding=utf8; @@ -23,14 +22,14 @@ oper -- Nouns used as functions need a preposition. The most common is with Genitive. - mkN2 : CommNoun -> CommNoun2 ; + mkN2 : N -> N2 ; mkN2 n = mkFun n nullPrep ; - mkFun : CommNoun -> Complement -> CommNoun2; - mkFun f p = { s = f.s; g = f.g; c = { c = p.c; s=p.s} } ; + mkFun : N -> Complement -> N2; + mkFun f c = f ** { c = c } ; - mkN3 : CommNoun -> Complement -> Complement -> CommNoun3; - mkN3 f p r = { s = f.s; g = f.g; c = {s=p.s; c=p.c} ; c2 = {s=r.s; c=r.c} }; + mkN3 : N -> Complement -> Complement -> N3; + mkN3 f c1 c2 = f ** { c1 = c1 ; c2 = c2 }; -- Prepositions diff --git a/src/polish/NounMorphoPol.gf b/src/polish/NounMorphoPol.gf index 2fcb3dca7..152ff5e5c 100644 --- a/src/polish/NounMorphoPol.gf +++ b/src/polish/NounMorphoPol.gf @@ -15,12 +15,12 @@ -- DO NOT EDIT THIS FILE -resource NounMorphoPol = ResPol ** open Prelude, (Predef=Predef) in { +resource NounMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef) in { flags coding=utf8; - oper mkN: (SubstForm => Str) -> Gender -> CommNoun; - oper mkN tab gen = { s = tab; g = gen }; + oper mkN: (SubstForm => Str) -> Gender -> N; + oper mkN tab gen = lin N { s = tab; g = gen }; oper nounPN : (SubstForm => Str) -> GenNum -> NounPhrase; oper nounPN forms gn = diff --git a/src/polish/NounPol.gf b/src/polish/NounPol.gf index 0b64dc54c..e6678b236 100644 --- a/src/polish/NounPol.gf +++ b/src/polish/NounPol.gf @@ -111,9 +111,9 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol, Mor g = n2.g }; - ComplN3 n3 np = { + ComplN3 n3 np = lin N2 { s = - \\sf => n3.s ! sf ++ n3.c.s ++ np.dep ! n3.c.c ; + \\sf => n3.s ! sf ++ n3.c1.s ++ np.dep ! n3.c1.c ; c = n3.c2; g = n3.g }; @@ -126,7 +126,7 @@ concrete NounPol of Noun = CatPol ** open ResPol, Prelude, PronounMorphoPol, Mor Use2N3 n3 = { s = n3.s; g = n3.g; - c = n3.c + c = n3.c1 }; Use3N3 n3 = { diff --git a/src/polish/ParadigmsPol.gf b/src/polish/ParadigmsPol.gf index e6f192bf4..daea8a45c 100644 --- a/src/polish/ParadigmsPol.gf +++ b/src/polish/ParadigmsPol.gf @@ -98,12 +98,12 @@ mkNGender = overload { -- 1 string mkNGender : Str -> Gender -> N = \sgnom,gender -> - let ntable : SubstForm => Str = guess_paradigm_basic sgnom in - lin N (NM.mkN ntable gender) ; + let ntable : SubstForm => Str = guess_paradigm_basic sgnom + in NM.mkN ntable gender ; -- 2 string mkNGender : Str -> Str -> Gender -> N = \sgnom,sggen,gender -> - let ntable : SubstForm => Str = guess_paradigm sgnom in - lin N (NM.mkN ntable gender) ; + let ntable : SubstForm => Str = guess_paradigm sgnom + in NM.mkN ntable gender ; }; guess_paradigm = overload { diff --git a/src/polish/QuestionPol.gf b/src/polish/QuestionPol.gf index 2a721363a..1bb7123e5 100644 --- a/src/polish/QuestionPol.gf +++ b/src/polish/QuestionPol.gf @@ -29,7 +29,7 @@ lin -- QuestIComp : IComp -> NP -> QCl ; -- where is John QuestIComp ic np = { s = \\p,a,t => ic.s ++ - (imienne_form {si = \\_=>[]; sp = \\_=>[]; asp = Dual; refl = ""; pparti,ppartp=\\_=>""} p !) ++ np.nom + (imienne_form (lin V {si = \\_=>[]; sp = \\_=>[]; asp = Dual; refl = ""; pparti,ppartp=\\_=>""}) p ! ) ++ np.nom }; -- IdetCN : IDet -> CN -> IP ; -- which five songs diff --git a/src/polish/ResPol.gf b/src/polish/ResPol.gf index 2c432ab62..422b26624 100644 --- a/src/polish/ResPol.gf +++ b/src/polish/ResPol.gf @@ -41,11 +41,7 @@ param SubstForm = SF Number Case ; - -- oper used in NounMorphoPol.gf - -- type of N, _not_ CN - oper CommNoun = {s : SubstForm => Str; g : Gender}; - oper CommNoun2 = CommNoun ** { c : Complement } ; - oper CommNoun3 = CommNoun2 ** { c2 : Complement } ; + oper Noun = {s : SubstForm => Str; g : Gender}; --2 Verbs diff --git a/src/polish/VerbMorphoPol.gf b/src/polish/VerbMorphoPol.gf index 5a84526f4..9667aa915 100644 --- a/src/polish/VerbMorphoPol.gf +++ b/src/polish/VerbMorphoPol.gf @@ -5,7 +5,7 @@ -- -- Adam Slaski, 2009 -- -resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=AdjectiveMorphoPol) in { +resource VerbMorphoPol = open CatPol, ResPol, Prelude, (Predef=Predef), (Adj=AdjectiveMorphoPol) in { flags coding=utf8; @@ -329,17 +329,17 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A -- 3 Verb types definition - mkV : Str -> ConjCl -> Str -> ConjCl -> Verb; + mkV : Str -> ConjCl -> Str -> ConjCl -> V; mkV = mkVerb; - mkV1 : Str -> ConjCl -> Str -> ConjCl -> Verb; + mkV1 : Str -> ConjCl -> Str -> ConjCl -> V; mkV1 s c s2 c2 = mkItVerb (mkVerb s c s2 c2); -- reflexive verbs - oper mkReflVerb : Verb -> Verb = - \v -> + oper mkReflVerb : V -> V = + \v -> lin V {si = v.si; sp = v.sp; refl = "się"; @@ -350,20 +350,20 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A -- intransitive verbs - oper mkItVerb : Verb -> Verb = - \v -> + oper mkItVerb : V -> V = + \v -> lin V {si = v.si; sp = v.sp; refl = v.refl; asp = v.asp; - ppartp = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++ [": the participle form does not exist]"]}; - pparti = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++ [": the participle form does not exist]"]} + ppartp = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = nonExist }; + pparti = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = nonExist } }; -- monoaspective verbs - oper mkMonoVerb : Str -> ConjCl -> Aspect -> Verb = - \s, c, a -> let tmp = (c s) in + oper mkMonoVerb : Str -> ConjCl -> Aspect -> V = + \s, c, a -> let tmp = (c s) in lin V {si = tmp.s; sp = tmp.s; refl = ""; @@ -374,8 +374,8 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A -- normal verbs - oper mkVerb : Str -> ConjCl -> Str -> ConjCl -> Verb = - \s, c, s2, c2 -> let tmpp = (c2 s2); tmpi = (c s) in + oper mkVerb : Str -> ConjCl -> Str -> ConjCl -> V = + \s, c, s2, c2 -> let tmpp = (c2 s2); tmpi = (c s) in lin V {si = tmpi.s; sp = tmpp.s; refl = ""; @@ -389,13 +389,13 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A -- can't be translated directly into one Polish word, so I introduced this (little bit -- unnatural) construction. - oper mkComplicatedVerb : Verb -> Str -> Verb = - \v,s -> + oper mkComplicatedVerb : V -> Str -> V = + \v,s -> lin V {si = \\form => v.si !form ++ s; sp = \\form => v.sp !form ++ s; refl = v.refl; asp = v.asp; - ppartp = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++s++ [": the participle form does not exist]"]}; - pparti = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = "["++v.si!VInfM ++s++ [": the participle form does not exist]"]} + ppartp = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = nonExist}; + pparti = record2table { s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11 = nonExist} }; @@ -403,19 +403,19 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A -- Two-place verbs, and the special case with a direct object. Note that -- a particle can be included in a $V$. - mkV2 : Verb -> Str -> Case -> V2; + mkV2 : V -> Str -> Case -> V2; mkV2 v p cas = v ** { c = mkCompl p cas; lock_V2 = <> }; - mkV3 : Verb -> Str -> Str -> Case -> Case -> V3; + mkV3 : V -> Str -> Str -> Case -> Case -> V3; mkV3 v s1 s2 c1 c2 = v ** { c = mkCompl s1 c1; c2 = mkCompl s2 c2; lock_V3 = <> }; - dirV2 : Verb -> V2; -- a typical case ie. "kochać", "pisać" + dirV2 : V -> V2; -- a typical case ie. "kochać", "pisać" dirV2 v = mkV2 v [] Acc; - dirV3 : Verb -> V3; -- a typical case ie. "zabrać", "dać" + dirV3 : V -> V3; -- a typical case ie. "zabrać", "dać" dirV3 v = mkV3 v "" "" Acc Dat; - indicative_form : Verb -> Bool -> Polarity -> Tense * Anteriority * GenNum * Person => Str; + indicative_form : V -> Bool -> Polarity -> Tense * Anteriority * GenNum * Person => Str; indicative_form verb imienne pol = case imienne of {True => imienne_form verb pol; False => let nie = case pol of { Pos => "" ; Neg => "nie" }; in @@ -433,7 +433,7 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A } }; - imienne_form : Verb -> Polarity -> Tense * Anteriority * GenNum * Person => Str; + imienne_form : V -> Polarity -> Tense * Anteriority * GenNum * Person => Str; imienne_form verb pol = let byc = (case verb.asp of { Perfective => conj3 "zostać"; _ => conj1 "być" }).s; in let zostac = (case verb.asp of { Imperfective => conj1 "być"; _ => conj3 "zostać" }).s; in @@ -461,7 +461,7 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A => "będą" }; - imperative_form : Verb -> Bool -> Polarity -> GenNum -> Person -> Str; + imperative_form : V -> Bool -> Polarity -> GenNum -> Person -> Str; imperative_form verb imienne pol gn p = case imienne of { True => @@ -493,7 +493,7 @@ resource VerbMorphoPol = ResPol ** open Prelude, CatPol, (Predef=Predef), (Adj=A } }; - infinitive_form : Verb -> Bool -> Polarity -> GenNum -> Str; + infinitive_form : V -> Bool -> Polarity -> GenNum -> Str; infinitive_form verb imienne pol gn = case imienne of { True =>