spaces before semicolons in ParadigmsPol to help synopsis generation

This commit is contained in:
aarne
2010-04-04 14:05:12 +00:00
parent f7219e75b6
commit 59c3482397

View File

@@ -34,53 +34,53 @@
CatPol CatPol
in in
{ {
flags coding=utf8; flags coding=utf8 ;
oper Gender = MorphoPol.Gender; oper Gender = MorphoPol.Gender ;
Case = MorphoPol.Case; Case = MorphoPol.Case ;
Number = MorphoPol.Number; Number = MorphoPol.Number ;
Animacy = MorphoPol.Animacy; Animacy = MorphoPol.Animacy ;
Aspect = MorphoPol.Aspect; Aspect = MorphoPol.Aspect ;
-- Voice = MorphoPol.Voice; -- Voice = MorphoPol.Voice ;
-- Tense = Tense; -- Tense = Tense ;
Bool = Prelude.Bool; Bool = Prelude.Bool ;
-- Used abbreviations -- Used abbreviations
masculineA = Masc Animate; masculineA = Masc Animate ;
masculineI = Masc Inanimate; masculineI = Masc Inanimate ;
masculineP = Masc Personal; masculineP = Masc Personal ;
feminine = Fem; feminine = Fem ;
neuter = Neut; neuter = Neut ;
nominative = Nom; nominative = Nom ;
genitive = Gen; genitive = Gen ;
dative = Dat; dative = Dat ;
accusative = Acc; accusative = Acc ;
instrumental = Instr; -- new, is like instrumental in russian instrumental = Instr ; -- new, is like instrumental in russian
locative = Loc; -- new, is like prepositional in russian locative = Loc ; -- new, is like prepositional in russian
vocative = VocP; vocative = VocP ;
singular = Sg; singular = Sg ;
plural = Pl; plural = Pl ;
animate = Animate; animate = Animate ;
inanimate = Inanimate; inanimate = Inanimate ;
personal = Personal; personal = Personal ;
true = True; true = True ;
false = False; false = False ;
--1 Nouns --1 Nouns
-- Parameters -------- -- Parameters --------
Gender : Type; Gender : Type ;
masculineP : Gender; -- personal masculineP : Gender ; -- personal
masculineA : Gender; -- animate masculineA : Gender ; -- animate
masculineI : Gender; -- inanimate masculineI : Gender ; -- inanimate
feminine : Gender; feminine : Gender ;
neuter : Gender; neuter : Gender ;
-- In Polish there are as in German 3 Genders: masculine, feminine and neuter. -- In Polish there are as in German 3 Genders: masculine, feminine and neuter.
-- But !!! in masculine declension we distinguish between: -- But !!! in masculine declension we distinguish between:
@@ -95,22 +95,22 @@
-- Animacy is only for masculine Nouns. -- Animacy is only for masculine Nouns.
Animacy: Type; Animacy: Type ;
animate: Animacy; animate: Animacy ;
inanimate: Animacy; inanimate: Animacy ;
personal : Animacy; personal : Animacy ;
Case : Type; Case : Type ;
nominative : Case; nominative : Case ;
genitive : Case; genitive : Case ;
dative : Case; dative : Case ;
accusative : Case; accusative : Case ;
instrumental : Case; instrumental : Case ;
locative : Case; locative : Case ;
vocative : Case; vocative : Case ;
-- To abstract over case names, I defined seven cases. -- To abstract over case names, I defined seven cases.
-- The seventh case vocative is like in english the phrase -- The seventh case vocative is like in english the phrase
@@ -123,23 +123,23 @@
-- To abstract over number names, I define the following. -- To abstract over number names, I define the following.
Number : Type; Number : Type ;
singular : Number; singular : Number ;
plural : Number; plural : Number ;
--1 Paradigms --1 Paradigms
-- Best case is for indeclinable nouns. They are: "alibi", "boa", "emu", "jury", "kakao", "menu", "zebu". -- Best case is for indeclinable nouns. They are: "alibi", "boa", "emu", "jury", "kakao", "menu", "zebu".
mkIndeclinableNoun: Str -> Gender -> N; --function declaration mkIndeclinableNoun: Str -> Gender -> N ; --function declaration
mkIndeclinableNoun = \str, g -> -- function definition mkIndeclinableNoun = \str, g -> -- function definition
{ {
s = table { SF _ _ => str }; s = table { SF _ _ => str } ;
g = g g = g
} ** {lock_N = <>}; } ** {lock_N = <>} ;
-- Worst case gives many forms. -- Worst case gives many forms.
@@ -168,457 +168,457 @@
---------- Patterns for feminine nouns ---------- ---------- Patterns for feminine nouns ----------
nKapiel : Str -> N; -- feminine, subject ending in "-l" nKapiel : Str -> N ; -- feminine, subject ending in "-l"
nKapiel = \s -> l_End_F_1 s ** {lock_N = <>}; nKapiel = \s -> l_End_F_1 s ** {lock_N = <>} ;
nLodz : Str -> N; -- feminine, subject ending in "-dź" nLodz : Str -> N ; -- feminine, subject ending in "-dź"
nLodz = \x -> dzx_End_VA1_CAL_F x ** {lock_N = <>}; nLodz = \x -> dzx_End_VA1_CAL_F x ** {lock_N = <>} ;
nSul : Str -> N; -- feminine, subject ending in "-l" nSul : Str -> N ; -- feminine, subject ending in "-l"
nSul = \x -> l_End_VA1_F x ** {lock_N = <>}; nSul = \x -> l_End_VA1_F x ** {lock_N = <>} ;
nKonew : Str -> N; -- feminine, subject ending in "-w" nKonew : Str -> N ; -- feminine, subject ending in "-w"
nKonew = \s -> w_End_FleetingEminus_F s ** {lock_N = <>}; nKonew = \s -> w_End_FleetingEminus_F s ** {lock_N = <>} ;
nWies : Str -> N; -- feminine, subject ending in "-ś" nWies : Str -> N ; -- feminine, subject ending in "-ś"
nWies = \x -> sx_End_CAL_FleetingIEminus_F x ** {lock_N = <>}; nWies = \x -> sx_End_CAL_FleetingIEminus_F x ** {lock_N = <>} ;
nDlon : Str -> N; -- feminine, subject ending in "-ń" nDlon : Str -> N ; -- feminine, subject ending in "-ń"
nDlon = \x -> nx_End_CAL_F x ** {lock_N = <>}; nDlon = \x -> nx_End_CAL_F x ** {lock_N = <>} ;
nSiec : Str -> N; -- feminine, subject ending in "-ć" (sieć),"-ść" (miłość) nSiec : Str -> N ; -- feminine, subject ending in "-ć" (sieć),"-ść" (miłość)
nSiec = \x -> cx_End_CAL_F_1 x ** {lock_N = <>}; nSiec = \x -> cx_End_CAL_F_1 x ** {lock_N = <>} ;
nDrzwi : Str -> N; -- drzwi, wnętrzności, usta nDrzwi : Str -> N ; -- drzwi, wnętrzności, usta
nDrzwi = \x -> onlyPlNoun x ** {lock_N = <>}; nDrzwi = \x -> onlyPlNoun x ** {lock_N = <>} ;
nKosc : Str -> N; -- feminine, subject ending in "-ść"(kość), "-ć" (nić), nKosc : Str -> N ; -- feminine, subject ending in "-ść"(kość), "-ć" (nić),
nKosc = \x -> cx_End_CAL_F_2 x ** {lock_N = <>}; nKosc = \x -> cx_End_CAL_F_2 x ** {lock_N = <>} ;
nNoc : Str -> N; -- feminine, subject ending in "-c", "-cz", "-rz", "-ż" nNoc : Str -> N ; -- feminine, subject ending in "-c", "-cz", "-rz", "-ż"
nNoc = \s -> hardened_End_F_1 s ** {lock_N = <>}; nNoc = \s -> hardened_End_F_1 s ** {lock_N = <>} ;
nWesz : Str -> N; -- feminine, subject ending in "-sz" nWesz : Str -> N ; -- feminine, subject ending in "-sz"
nWesz = \s -> sz_End_FleetingEminus_F s ** {lock_N = <>}; nWesz = \s -> sz_End_FleetingEminus_F s ** {lock_N = <>} ;
nKrolowa : Str -> N; -- feminine, subject ending in "-wa", but also for "księżna" nKrolowa : Str -> N ; -- feminine, subject ending in "-wa", but also for "księżna"
nKrolowa = \s -> wa_na_End_F s ** {lock_N = <>}; nKrolowa = \s -> wa_na_End_F s ** {lock_N = <>} ;
nReka : Str -> N; -- feminine "ręka", irregularly noun nReka : Str -> N ; -- feminine "ręka", irregularly noun
nReka = \x -> k_End_Unregulary_VA3_CA_F x ** {lock_N = <>}; nReka = \x -> k_End_Unregulary_VA3_CA_F x ** {lock_N = <>} ;
nApteka : Str -> N; -- feminine, subject ending in "-k", -"g", consonant alternation k:c, g:dz nApteka : Str -> N ; -- feminine, subject ending in "-k", -"g", consonant alternation k:c, g:dz
nApteka = \s -> g_k_End_CA_F s ** {lock_N = <>}; nApteka = \s -> g_k_End_CA_F s ** {lock_N = <>} ;
nDroga : Str -> N; -- feminine, subject ending in "g", consonant alternation d:dz, vowel alternation o:ó nDroga : Str -> N ; -- feminine, subject ending in "g", consonant alternation d:dz, vowel alternation o:ó
nDroga = \s -> g_End_VA1_CA_F s ** {lock_N = <>}; nDroga = \s -> g_End_VA1_CA_F s ** {lock_N = <>} ;
nMatka : Str -> N; -- feminine, subject ending in -k,consonant alternation k:c, fleeting e nMatka : Str -> N ; -- feminine, subject ending in -k,consonant alternation k:c, fleeting e
nMatka = \s -> k_End_CA_FleetingEplus_F s ** {lock_N = <>}; nMatka = \s -> k_End_CA_FleetingEplus_F s ** {lock_N = <>} ;
nZiemia : Str -> N; -- feminine, subject ending in "-ia" nZiemia : Str -> N ; -- feminine, subject ending in "-ia"
nZiemia = \s -> ia_End_F_1 s ** {lock_N = <>}; nZiemia = \s -> ia_End_F_1 s ** {lock_N = <>} ;
nFala : Str -> N; -- feminine, subject ending in "-l" nFala : Str -> N ; -- feminine, subject ending in "-l"
nFala = \s -> l_End_F_2 s ** {lock_N = <>}; nFala = \s -> l_End_F_2 s ** {lock_N = <>} ;
nLilia : Str -> N; -- feminine, subject ending in "-ia" nLilia : Str -> N ; -- feminine, subject ending in "-ia"
nLilia = \s -> ia_End_F_2 s ** {lock_N = <>}; nLilia = \s -> ia_End_F_2 s ** {lock_N = <>} ;
nKobieta : Str -> N; -- feminine, subject ending in "-t" nKobieta : Str -> N ; -- feminine, subject ending in "-t"
nKobieta = \s -> hard_End_CAL_F s ** {lock_N = <>}; nKobieta = \s -> hard_End_CAL_F s ** {lock_N = <>} ;
nLiczba : Str -> N; -- feminine, subject ending in "-b", "-p", "-n" nLiczba : Str -> N ; -- feminine, subject ending in "-b", "-p", "-n"
nLiczba = \s -> hard_End_CL_F s ** {lock_N = <>}; nLiczba = \s -> hard_End_CL_F s ** {lock_N = <>} ;
nSila : Str -> N; -- feminine, subject ending in "-ł", "-r" nSila : Str -> N ; -- feminine, subject ending in "-ł", "-r"
nSila = \s -> hard_End_CA_F s ** {lock_N = <>}; nSila = \s -> hard_End_CA_F s ** {lock_N = <>} ;
nDoba : Str -> N; -- feminine, subject ending in "-b", "-p" nDoba : Str -> N ; -- feminine, subject ending in "-b", "-p"
nDoba = \s -> hard_End_VA1_CL_F s ** {lock_N = <>}; nDoba = \s -> hard_End_VA1_CL_F s ** {lock_N = <>} ;
nWoda : Str -> N; -- feminine, subject ending in "-d" nWoda : Str -> N ; -- feminine, subject ending in "-d"
nWoda = \s -> hard_End_VA1_CAL_F s ** {lock_N = <>}; nWoda = \s -> hard_End_VA1_CAL_F s ** {lock_N = <>} ;
nSzkola : Str -> N; -- feminine, subject ending in "-oła", "-ra" nSzkola : Str -> N ; -- feminine, subject ending in "-oła", "-ra"
nSzkola = \s -> hard_End_VA1_CA_F s ** {lock_N = <>}; nSzkola = \s -> hard_End_VA1_CA_F s ** {lock_N = <>} ;
nWojna : Str -> N; -- feminine, subject ending in two consonants: jn, łz, łn, ćm,żw nWojna : Str -> N ; -- feminine, subject ending in two consonants: jn, łz, łn, ćm,żw
nWojna = \s -> hard_End_CL_FleetingEplus_F s ** {lock_N = <>}; nWojna = \s -> hard_End_CL_FleetingEplus_F s ** {lock_N = <>} ;
nWiosna : Str -> N; -- feminine, subject ending in two consonants: sn nWiosna : Str -> N ; -- feminine, subject ending in two consonants: sn
nWiosna = \s -> sn_End_CAL_FleetingIEplus_F s ** {lock_N = <>}; nWiosna = \s -> sn_End_CAL_FleetingIEplus_F s ** {lock_N = <>} ;
nMgla : Str -> N; -- feminine, subject ending in "-gł" nMgla : Str -> N ; -- feminine, subject ending in "-gł"
nMgla = \x -> hard_l_End_CA_FleetingIEplus_F x ** {lock_N = <>}; nMgla = \x -> hard_l_End_CA_FleetingIEplus_F x ** {lock_N = <>} ;
nGwiazda : Str -> N; -- feminine, subject ending in "-zd" nGwiazda : Str -> N ; -- feminine, subject ending in "-zd"
nGwiazda = \s -> zd_st_End_VA2_CAL_F s ** {lock_N = <>}; nGwiazda = \s -> zd_st_End_VA2_CAL_F s ** {lock_N = <>} ;
nUlica : Str -> N; -- feminine, subject ending mainly in "-c", but also in "-ż", "-rz", "-dz" nUlica : Str -> N ; -- feminine, subject ending mainly in "-c", but also in "-ż", "-rz", "-dz"
nUlica = \s -> hardened_End_F_2 s ** {lock_N = <>}; nUlica = \s -> hardened_End_F_2 s ** {lock_N = <>} ;
nOwca : Str -> N; -- feminine, subject ending in "-c" nOwca : Str -> N ; -- feminine, subject ending in "-c"
nOwca = \x -> c_End_FleetingIEplus_F x ** {lock_N = <>}; nOwca = \x -> c_End_FleetingIEplus_F x ** {lock_N = <>} ;
-------- Patterns for neuter nouns ---------- -------- Patterns for neuter nouns ----------
nDanie : Str -> N; -- neuter, subject ending in "-ni" nDanie : Str -> N ; -- neuter, subject ending in "-ni"
nDanie = \s -> ci_ni_week_End_CA_N s ** {lock_N = <>}; nDanie = \s -> ci_ni_week_End_CA_N s ** {lock_N = <>} ;
nSerce : Str -> N; -- neuter, subject ending in a hardened consonant "-c", "-rz" nSerce : Str -> N ; -- neuter, subject ending in a hardened consonant "-c", "-rz"
nSerce = \s -> hardened_End_N s ** {lock_N = <>}; nSerce = \s -> hardened_End_N s ** {lock_N = <>} ;
nNasienie : Str -> N; -- neuter, subject ending in "-ni" (only for "nasienie") nNasienie : Str -> N ; -- neuter, subject ending in "-ni" (only for "nasienie")
nNasienie = \x -> ni_End_VA2_N x ** {lock_N = <>}; nNasienie = \x -> ni_End_VA2_N x ** {lock_N = <>} ;
nMorze : Str -> N; -- neuter, subject ending in "-rz", "-ż" nMorze : Str -> N ; -- neuter, subject ending in "-rz", "-ż"
nMorze = \x -> rz_zx_End_VA1_N x ** {lock_N = <>}; nMorze = \x -> rz_zx_End_VA1_N x ** {lock_N = <>} ;
nImie : Str -> N; -- neuter, subject ending in "-ę" nImie : Str -> N ; -- neuter, subject ending in "-ę"
nImie = \x -> ex_End_VA2_N x ** {lock_N = <>}; nImie = \x -> ex_End_VA2_N x ** {lock_N = <>} ;
nCiele : Str -> N; -- neuter, subject ending in "-ę" nCiele : Str -> N ; -- neuter, subject ending in "-ę"
nCiele = \s -> ex_End_VA3_N s ** {lock_N = <>}; nCiele = \s -> ex_End_VA3_N s ** {lock_N = <>} ;
nUdo : Str -> N; -- neuter, subject ending in hard consonant + "o" nUdo : Str -> N ; -- neuter, subject ending in hard consonant + "o"
nUdo = \s -> hard_End_CAL_N s ** {lock_N = <>}; nUdo = \s -> hard_End_CAL_N s ** {lock_N = <>} ;
nPiwo : Str -> N; -- neuter, subject ending in a hard consonant + "o" nPiwo : Str -> N ; -- neuter, subject ending in a hard consonant + "o"
nPiwo = \s -> hard_End_CL_N s ** {lock_N = <>}; nPiwo = \s -> hard_End_CL_N s ** {lock_N = <>} ;
nZero : Str -> N; -- neuter, subject ending in "-r" nZero : Str -> N ; -- neuter, subject ending in "-r"
nZero = \s -> r_End_CA_N s ** {lock_N = <>}; nZero = \s -> r_End_CA_N s ** {lock_N = <>} ;
nNiebo : Str -> N; -- neuter, declension for "niebo" nNiebo : Str -> N ; -- neuter, declension for "niebo"
nNiebo = \x -> niebo_Unregulary_N x ** {lock_N = <>}; nNiebo = \x -> niebo_Unregulary_N x ** {lock_N = <>} ;
nTlo : Str -> N; -- neuter, subject ending in "-ło" nTlo : Str -> N ; -- neuter, subject ending in "-ło"
nTlo = \s -> lx_End_CA_FleetingEplus_N s ** {lock_N = <>}; nTlo = \s -> lx_End_CA_FleetingEplus_N s ** {lock_N = <>} ;
nZebro : Str -> N; -- neuter, subject ending in "-r" nZebro : Str -> N ; -- neuter, subject ending in "-r"
nZebro = \s -> hard_End_CA_FleetingEplus_N s ** {lock_N = <>}; nZebro = \s -> hard_End_CA_FleetingEplus_N s ** {lock_N = <>} ;
nOkno : Str -> N; -- neuter, subject ending in "-n" nOkno : Str -> N ; -- neuter, subject ending in "-n"
nOkno = \s -> n_End_CL_FleetingIEplus_N s ** {lock_N = <>}; nOkno = \s -> n_End_CL_FleetingIEplus_N s ** {lock_N = <>} ;
nGniazdo : Str -> N; -- neuter, subject ending in "-zd", "-st" nGniazdo : Str -> N ; -- neuter, subject ending in "-zd", "-st"
nGniazdo = \s -> hard_End_VA_CAL_N s ** {lock_N = <>}; nGniazdo = \s -> hard_End_VA_CAL_N s ** {lock_N = <>} ;
nWojsko : Str -> N; -- neuter, subject ending in "-k" nWojsko : Str -> N ; -- neuter, subject ending in "-k"
nWojsko = \s -> k_End_CL_N s ** {lock_N = <>}; nWojsko = \s -> k_End_CL_N s ** {lock_N = <>} ;
nJajo : Str -> N; -- neuter, subject ending in "-j" nJajo : Str -> N ; -- neuter, subject ending in "-j"
nJajo = \s -> j_End_N s ** {lock_N = <>}; nJajo = \s -> j_End_N s ** {lock_N = <>} ;
nJablko : Str -> N; -- neuter, subject ending in "-k" nJablko : Str -> N ; -- neuter, subject ending in "-k"
nJablko = \s -> k_End_CL_FleetingEplus_N s ** {lock_N = <>}; nJablko = \s -> k_End_CL_FleetingEplus_N s ** {lock_N = <>} ;
nStudio : Str -> N; -- neuter, subject ending in "-n" nStudio : Str -> N ; -- neuter, subject ending in "-n"
nStudio = \s -> o_End_N s ** {lock_N = <>}; nStudio = \s -> o_End_N s ** {lock_N = <>} ;
nDziecko : Str -> N; -- neuter, subject ending in "-n" nDziecko : Str -> N ; -- neuter, subject ending in "-n"
nDziecko = \s -> k_End_CAL_N s ** {lock_N = <>}; nDziecko = \s -> k_End_CAL_N s ** {lock_N = <>} ;
nUcho : Str -> N; -- neuter, subject ending in "-ch" nUcho : Str -> N ; -- neuter, subject ending in "-ch"
nUcho = \x -> ch_End_Unregulary_CA_N x ** {lock_N = <>}; nUcho = \x -> ch_End_Unregulary_CA_N x ** {lock_N = <>} ;
nOko : Str -> N; -- neuter, subject ending in "-k" nOko : Str -> N ; -- neuter, subject ending in "-k"
nOko = \x -> k_End_Unregulary_CAL_N x ** {lock_N = <>}; nOko = \x -> k_End_Unregulary_CAL_N x ** {lock_N = <>} ;
---- Patterns for personal masculine nouns ------ ---- Patterns for personal masculine nouns ------
nFacet : Str -> N; -- masculine personal, subject ending in a hard consonant "-t", -"n", nom pl "-i" nFacet : Str -> N ; -- masculine personal, subject ending in a hard consonant "-t", -"n", nom pl "-i"
nFacet = \s -> hard_End_CAL_MP_1 s ** {lock_N = <>}; nFacet = \s -> hard_End_CAL_MP_1 s ** {lock_N = <>} ;
nArab : Str -> N; -- masculine personal, subject ending in a hard consonant "-t", -"n", nom pl "-y" nArab : Str -> N ; -- masculine personal, subject ending in a hard consonant "-t", -"n", nom pl "-y"
nArab = \s -> hard_End_CAL_MP_2 s ** {lock_N = <>}; nArab = \s -> hard_End_CAL_MP_2 s ** {lock_N = <>} ;
nPrzyjaciel : Str -> N; -- masculine personal, subject ending in a hard consonant "-l" nPrzyjaciel : Str -> N ; -- masculine personal, subject ending in a hard consonant "-l"
nPrzyjaciel = \s -> przyjaciel_VA1_VA2_CA_MP s ** {lock_N = <>}; nPrzyjaciel = \s -> przyjaciel_VA1_VA2_CA_MP s ** {lock_N = <>} ;
nKowal : Str -> N; -- masculine personal, subject ending in a hard consonant "-l" nKowal : Str -> N ; -- masculine personal, subject ending in a hard consonant "-l"
nKowal = \s -> l_End_MP s ** {lock_N = <>}; nKowal = \s -> l_End_MP s ** {lock_N = <>} ;
nLekarz : Str -> N; -- masculine personal ending in -rz, -ż, -cz, -sz (piekarz, lekarz, papież, tłumacz, piwosz) nLekarz : Str -> N ; -- masculine personal ending in -rz, -ż, -cz, -sz (piekarz, lekarz, papież, tłumacz, piwosz)
nLekarz = \s -> hardened_End_MP s ** {lock_N = <>}; nLekarz = \s -> hardened_End_MP s ** {lock_N = <>} ;
nKrol : Str -> N; -- masculine personal, subject ending in "-ul" nKrol : Str -> N ; -- masculine personal, subject ending in "-ul"
nKrol = \s -> ul_End_MP s ** {lock_N = <>}; nKrol = \s -> ul_End_MP s ** {lock_N = <>} ;
nMaz : Str -> N; -- masculine personal nMaz : Str -> N ; -- masculine personal
nMaz = \s -> maz_MP s ** {lock_N = <>}; nMaz = \s -> maz_MP s ** {lock_N = <>} ;
nWrog : Str -> N; -- masculine personal, subject ending in "-g"; only for "wróg" nWrog : Str -> N ; -- masculine personal, subject ending in "-g" ; only for "wróg"
nWrog = \s -> wrog_VA1_CL_MP s ** {lock_N = <>}; nWrog = \s -> wrog_VA1_CL_MP s ** {lock_N = <>} ;
-- nCzlowiek : Str -> N; -- masculine personal -- nCzlowiek : Str -> N ; -- masculine personal
-- nCzlowiek = \s -> ul_End_MP s ** {lock_N = <>}; -- nCzlowiek = \s -> ul_End_MP s ** {lock_N = <>} ;
nKsiadz : Str -> N; -- masculine personal nKsiadz : Str -> N ; -- masculine personal
nKsiadz = \s -> ksiadz_VA3_CA_MP s ** {lock_N = <>}; nKsiadz = \s -> ksiadz_VA3_CA_MP s ** {lock_N = <>} ;
nOjciec : Str -> N; -- masculine personal for "ojciec" nOjciec : Str -> N ; -- masculine personal for "ojciec"
nOjciec = \s -> ciec_End_CA_FleetingIEminus_MP s ** {lock_N = <>}; nOjciec = \s -> ciec_End_CA_FleetingIEminus_MP s ** {lock_N = <>} ;
nBrat : Str -> N; -- masculine personal nBrat : Str -> N ; -- masculine personal
nBrat = \s -> hard_End_CAL_MP s ** {lock_N = <>}; nBrat = \s -> hard_End_CAL_MP s ** {lock_N = <>} ;
nBog : Str -> N; -- masculine personal nBog : Str -> N ; -- masculine personal
nBog = \s -> bog_VA1_CAL_MP s ** {lock_N = <>}; nBog = \s -> bog_VA1_CAL_MP s ** {lock_N = <>} ;
nChlopiec : Str -> N; -- masculine personal nChlopiec : Str -> N ; -- masculine personal
nChlopiec = \s -> iec_End_CA_FleetingIEminus_MP s ** {lock_N = <>}; nChlopiec = \s -> iec_End_CA_FleetingIEminus_MP s ** {lock_N = <>} ;
nMezczyzna : Str -> N; -- masculine personal nMezczyzna : Str -> N ; -- masculine personal
nMezczyzna = \s -> zna_End_CAL_MP s ** {lock_N = <>}; nMezczyzna = \s -> zna_End_CAL_MP s ** {lock_N = <>} ;
------------------- Patterns for animate masculine nouns ------- ------------------- Patterns for animate masculine nouns -------
nKon : Str -> N; -- masculine animate, for "koń" nKon : Str -> N ; -- masculine animate, for "koń"
nKon = \s -> kon_CAL_MA s ** {lock_N = <>}; nKon = \s -> kon_CAL_MA s ** {lock_N = <>} ;
nWaz : Str -> N; -- masculine animate, for "wąż" nWaz : Str -> N ; -- masculine animate, for "wąż"
nWaz = \s -> waz_VA3_MA s ** {lock_N = <>}; nWaz = \s -> waz_VA3_MA s ** {lock_N = <>} ;
nPtak : Str -> N; -- masculine animate, subject ending in "-k" nPtak : Str -> N ; -- masculine animate, subject ending in "-k"
nPtak = \s -> k_End_CL_MA s ** {lock_N = <>}; nPtak = \s -> k_End_CL_MA s ** {lock_N = <>} ;
nKot : Str -> N; -- masculine animate, for "kot" nKot : Str -> N ; -- masculine animate, for "kot"
nKot = \s -> kot_CAL_MA s ** {lock_N = <>}; nKot = \s -> kot_CAL_MA s ** {lock_N = <>} ;
nPies : Str -> N; -- masculine animate, for "pies" nPies : Str -> N ; -- masculine animate, for "pies"
nPies = \s -> pies_CL_FleetingIEminus_MA s ** {lock_N = <>}; nPies = \s -> pies_CL_FleetingIEminus_MA s ** {lock_N = <>} ;
------------------ Patterns for inanimate masculine nouns ----- ------------------ Patterns for inanimate masculine nouns -----
nBat : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nBat : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nBat = \s -> vowel_hard_CAL_MI s ** {lock_N = <>}; nBat = \s -> vowel_hard_CAL_MI s ** {lock_N = <>} ;
nChleb : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nChleb : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nChleb = \s -> vowel_hard_CL_MI s ** {lock_N = <>}; nChleb = \s -> vowel_hard_CL_MI s ** {lock_N = <>} ;
nSer : Str -> N; -- masculine inanimate, subject ending in "-r" nSer : Str -> N ; -- masculine inanimate, subject ending in "-r"
nSer = \s -> r_End_CA_MI s ** {lock_N = <>}; nSer = \s -> r_End_CA_MI s ** {lock_N = <>} ;
nZab : Str -> N; -- masculine inanimate, subject ending in "-ąb" nZab : Str -> N ; -- masculine inanimate, subject ending in "-ąb"
nZab = \s -> ab_End_VA3_CL_MI s ** {lock_N = <>}; nZab = \s -> ab_End_VA3_CL_MI s ** {lock_N = <>} ;
nKosciol : Str -> N; -- masculine inanimate, for "kosciół" nKosciol : Str -> N ; -- masculine inanimate, for "kosciół"
nKosciol = \s -> kosciol_VA1_VA2_CA_MI s ** {lock_N = <>}; nKosciol = \s -> kosciol_VA1_VA2_CA_MI s ** {lock_N = <>} ;
nCien : Str -> N; -- masculine inanimate, subject ending in a week consonant nCien : Str -> N ; -- masculine inanimate, subject ending in a week consonant
nCien = \s -> week_End_CAL_MI s ** {lock_N = <>}; nCien = \s -> week_End_CAL_MI s ** {lock_N = <>} ;
nPien : Str -> N; -- masculine inanimate, subject ending in a week consonant nPien : Str -> N ; -- masculine inanimate, subject ending in a week consonant
nPien = \s -> week_End_CAL_FleetingIEminus_MI s ** {lock_N = <>}; nPien = \s -> week_End_CAL_FleetingIEminus_MI s ** {lock_N = <>} ;
nLisc : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nLisc : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nLisc = \s -> lisc_CAL_MI s ** {lock_N = <>}; nLisc = \s -> lisc_CAL_MI s ** {lock_N = <>} ;
nKoc : Str -> N; -- masculine inanimate, subject ending in a hardened consonant nKoc : Str -> N ; -- masculine inanimate, subject ending in a hardened consonant
nKoc = \s -> hardened_End_MI_1 s ** {lock_N = <>}; nKoc = \s -> hardened_End_MI_1 s ** {lock_N = <>} ;
nWiersz : Str -> N; -- masculine inanimate, subject ending in a hardened consonant nWiersz : Str -> N ; -- masculine inanimate, subject ending in a hardened consonant
nWiersz = \s -> hardened_End_MI_2 s ** {lock_N = <>}; nWiersz = \s -> hardened_End_MI_2 s ** {lock_N = <>} ;
nDzien : Str -> N; -- masculine inanimate, for "dzień" nDzien : Str -> N ; -- masculine inanimate, for "dzień"
nDzien = \s -> dzien_MI s ** {lock_N = <>}; nDzien = \s -> dzien_MI s ** {lock_N = <>} ;
nKajak : Str -> N; -- masculine inanimate, subject ending in -g or -k nKajak : Str -> N ; -- masculine inanimate, subject ending in -g or -k
nKajak = \s -> g_k_End_CL_MI_1 s ** {lock_N = <>}; nKajak = \s -> g_k_End_CL_MI_1 s ** {lock_N = <>} ;
nMlotek : Str -> N; -- masculine inanimate, subject ending in -ek nMlotek : Str -> N ; -- masculine inanimate, subject ending in -ek
nMlotek = \s -> k_End_CL_FleetingEminus_MI s ** {lock_N = <>}; nMlotek = \s -> k_End_CL_FleetingEminus_MI s ** {lock_N = <>} ;
nMiech : Str -> N; -- masculine inanimate, subject ending in -ch nMiech : Str -> N ; -- masculine inanimate, subject ending in -ch
nMiech = \s -> ch_End_MI s ** {lock_N = <>}; nMiech = \s -> ch_End_MI s ** {lock_N = <>} ;
nSad : Str -> N; -- masculine inanimate, subject ending in a hard consonant nSad : Str -> N ; -- masculine inanimate, subject ending in a hard consonant
nSad = \s -> hard_End_CAL_MI s ** {lock_N = <>}; nSad = \s -> hard_End_CAL_MI s ** {lock_N = <>} ;
nDym : Str -> N; -- masculine inanimate, subject ending in a hard consonant nDym : Str -> N ; -- masculine inanimate, subject ending in a hard consonant
nDym = \s -> hard_End_CL_MI s ** {lock_N = <>}; nDym = \s -> hard_End_CL_MI s ** {lock_N = <>} ;
nWal : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nWal : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nWal = \s -> hard_End_CA_MI s ** {lock_N = <>}; nWal = \s -> hard_End_CA_MI s ** {lock_N = <>} ;
nDol : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nDol : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nDol = \s -> hard_End_VA1_CA_MI s ** {lock_N = <>}; nDol = \s -> hard_End_VA1_CA_MI s ** {lock_N = <>} ;
nOgrod : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nOgrod : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nOgrod = \s -> hard_End_VA1_CAL_MI s ** {lock_N = <>}; nOgrod = \s -> hard_End_VA1_CAL_MI s ** {lock_N = <>} ;
nKwiat : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nKwiat : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nKwiat = \s -> hard_End_VA2_CAL_MI s ** {lock_N = <>}; nKwiat = \s -> hard_End_VA2_CAL_MI s ** {lock_N = <>} ;
nLas : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nLas : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nLas = \s -> hard_End_VA2_CL_MI s ** {lock_N = <>}; nLas = \s -> hard_End_VA2_CL_MI s ** {lock_N = <>} ;
nWiatr : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nWiatr : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nWiatr = \s -> wiatr_VA2_CA_MI s ** {lock_N = <>}; nWiatr = \s -> wiatr_VA2_CA_MI s ** {lock_N = <>} ;
nPopiol : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant nPopiol : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant
nPopiol = \s -> popiol_VA2_CA_MI s ** {lock_N = <>}; nPopiol = \s -> popiol_VA2_CA_MI s ** {lock_N = <>} ;
nPokoj : Str -> N; -- masculine inanimate, subject ending in -ój nPokoj : Str -> N ; -- masculine inanimate, subject ending in -ój
nPokoj = \s -> onlySgNoun s ** {lock_N = <>}; nPokoj = \s -> onlySgNoun s ** {lock_N = <>} ;
nGaj : Str -> N; -- masculine inanimate, subject ending in a vowel + hard consonant j nGaj : Str -> N ; -- masculine inanimate, subject ending in a vowel + hard consonant j
nGaj = \s -> vowel_j_or_handened_End_MI s ** {lock_N = <>}; nGaj = \s -> vowel_j_or_handened_End_MI s ** {lock_N = <>} ;
nBrzeg : Str -> N; -- masculine inanimate, subject ending in -g or -k nBrzeg : Str -> N ; -- masculine inanimate, subject ending in -g or -k
nBrzeg = \s -> g_k_End_CL_MI_2 s ** {lock_N = <>}; nBrzeg = \s -> g_k_End_CL_MI_2 s ** {lock_N = <>} ;
nRok : Str -> Str -> N; -- masculine inanimate for "rok", form in pl irregular nRok : Str -> Str -> N ; -- masculine inanimate for "rok", form in pl irregular
nRok = \s, t -> rok_UnregularyPl_CL_MI s t ** {lock_N = <>}; nRok = \s, t -> rok_UnregularyPl_CL_MI s t ** {lock_N = <>} ;
nProg : Str -> N; -- masculine inanimate, subject ending in -óg nProg : Str -> N ; -- masculine inanimate, subject ending in -óg
nProg = \s -> ug_End_VA1_CL_MI s ** {lock_N = <>}; nProg = \s -> ug_End_VA1_CL_MI s ** {lock_N = <>} ;
nStatek : Str -> N; -- masculine inanimate, subject ending in -ek nStatek : Str -> N ; -- masculine inanimate, subject ending in -ek
nStatek = \s -> k_End_CL_FleetingEmins_MI s ** {lock_N = <>}; nStatek = \s -> k_End_CL_FleetingEmins_MI s ** {lock_N = <>} ;
nDom : Str -> N; -- masculine inanimate, subject ending in -ch and for dom nDom : Str -> N ; -- masculine inanimate, subject ending in -ch and for dom
nDom = \s -> ch_End_dom_MI s ** {lock_N = <>}; nDom = \s -> ch_End_dom_MI s ** {lock_N = <>} ;
-- Nominative, Genetive, Dative, Accusative, Instrumental, Locative and Vocative; -- Nominative, Genetive, Dative, Accusative, Instrumental, Locative and Vocative ;
-- corresponding seven plural forms and the gender. -- corresponding seven plural forms and the gender.
mkN : (nomSg, genSg, datSg, accSg, instrSg, locSg, vocSg, mkN : (nomSg, genSg, datSg, accSg, instrSg, locSg, vocSg,
nomPl, genPl, datPl, accPl, instrPl, locPl, vocPl: Str) -> Gender -> N; nomPl, genPl, datPl, accPl, instrPl, locPl, vocPl: Str) -> Gender -> N ;
mkN = \nomSg, genSg, datSg, accSg, instrSg, locSg, vocSg, mkN = \nomSg, genSg, datSg, accSg, instrSg, locSg, vocSg,
nomPl, genPl, datPl, accPl, instrPl, locPl, vocPl, g -> nomPl, genPl, datPl, accPl, instrPl, locPl, vocPl, g ->
{ {
s = table { s = table {
SF Sg Nom => nomSg; SF Sg Nom => nomSg ;
SF Sg Gen => genSg; SF Sg Gen => genSg ;
SF Sg Dat => datSg; SF Sg Dat => datSg ;
SF Sg Acc => accSg; SF Sg Acc => accSg ;
SF Sg Instr => instrSg; SF Sg Instr => instrSg ;
SF Sg Loc => locSg; SF Sg Loc => locSg ;
SF Sg VocP => vocSg; SF Sg VocP => vocSg ;
SF Pl Nom => nomPl; SF Pl Nom => nomPl ;
SF Pl Gen => genPl; SF Pl Gen => genPl ;
SF Pl Dat => datPl; SF Pl Dat => datPl ;
SF Pl Acc => accPl; SF Pl Acc => accPl ;
SF Pl Instr => instrPl; SF Pl Instr => instrPl ;
SF Pl Loc => locPl; SF Pl Loc => locPl ;
SF Pl VocP => vocPl SF Pl VocP => vocPl
}; } ;
g = g; g = g ;
} ** {lock_N = <> } ; } ** {lock_N = <> } ;
-- Nouns used as functions need a preposition. The most common is with Genitive. -- Nouns used as functions need a preposition. The most common is with Genitive.
mkN2 : N -> N2 ; mkN2 : N -> N2 ;
mkN2 n = mkFun n nullPrep ; mkN2 n = mkFun n nullPrep ;
mkFun : N -> Prep -> N2; mkFun : N -> Prep -> N2 ;
mkFun f p = { s = f.s; g = f.g; c = { c = p.c; s=p.s}; lock_N2=<> } ; mkFun f p = { s = f.s ; g = f.g ; c = { c = p.c ; s=p.s} ; lock_N2=<> } ;
-- The commonest cases are functions with Genitive. -- The commonest cases are functions with Genitive.
nullPrep : Prep = {s = []; c= GenNoPrep; lock_Prep=<>}; nullPrep : Prep = {s = [] ; c= GenNoPrep ; lock_Prep=<>} ;
mkN3 : N -> Prep -> Prep -> N3; mkN3 : N -> Prep -> Prep -> N3 ;
mkN3 f p r = { s = f.s; g = f.g; c = {s=p.s; c=p.c} ; c2 = {s=r.s; c=r.c}; lock_N3=<>}; mkN3 f p r = { s = f.s ; g = f.g ; c = {s=p.s ; c=p.c} ; c2 = {s=r.s ; c=r.c} ; lock_N3=<>} ;
--6 Preposition --6 Preposition
-- A preposition is formed from a string and a case. -- A preposition is formed from a string and a case.
mkPrep : Str -> Case -> Prep; mkPrep : Str -> Case -> Prep ;
mkPrep s c = mkCompl s c ** {lock_Prep = <>}; mkPrep s c = mkCompl s c ** {lock_Prep = <>} ;
-- Often just a case with the empty string is enough. -- Often just a case with the empty string is enough.
-- the directly following noun without a preposition -- the directly following noun without a preposition
genPrep : Prep; genPrep : Prep ;
genPrep = mkPrep [] genitive; genPrep = mkPrep [] genitive ;
datPrep : Prep; datPrep : Prep ;
datPrep = mkPrep [] dative; datPrep = mkPrep [] dative ;
accPrep : Prep; accPrep : Prep ;
accPrep = mkPrep [] accusative; accPrep = mkPrep [] accusative ;
instrPrep : Prep; instrPrep : Prep ;
instrPrep = mkPrep [] instrumental; instrPrep = mkPrep [] instrumental ;
-- A great many of common prepositions are always with the genitive. -- A great many of common prepositions are always with the genitive.
bez_Prep : Prep; --without bez_Prep : Prep ; --without
bez_Prep = mkPrep "bez" genitive; bez_Prep = mkPrep "bez" genitive ;
dla_Prep : Prep; --for dla_Prep : Prep ; --for
dla_Prep = mkPrep "dla" genitive; dla_Prep = mkPrep "dla" genitive ;
do_Prep : Prep; --to do_Prep : Prep ; --to
do_Prep = mkPrep "do" genitive; do_Prep = mkPrep "do" genitive ;
dookola_Prep : Prep; --(a)round dookola_Prep : Prep ; --(a)round
dookola_Prep = mkPrep "dookoła" genitive; dookola_Prep = mkPrep "dookoła" genitive ;
kolo_Prep : Prep; --near kolo_Prep : Prep ; --near
kolo_Prep = mkPrep "koło" genitive; kolo_Prep = mkPrep "koło" genitive ;
obok_Prep : Prep; --beside, next to obok_Prep : Prep ; --beside, next to
obok_Prep = mkPrep "obok" genitive; obok_Prep = mkPrep "obok" genitive ;
od_Prep : Prep; --from od_Prep : Prep ; --from
od_Prep = mkPrep "od" genitive; od_Prep = mkPrep "od" genitive ;
oprocz_Prep : Prep; --out of oprocz_Prep : Prep ; --out of
oprocz_Prep = mkPrep "oprócz" genitive; oprocz_Prep = mkPrep "oprócz" genitive ;
podczas_Prep : Prep; --during podczas_Prep : Prep ; --during
podczas_Prep = mkPrep "podczas" genitive; podczas_Prep = mkPrep "podczas" genitive ;
mimo_Prep : Prep; -- despite mimo_Prep : Prep ; -- despite
mimo_Prep = mkPrep "mimo" genitive; mimo_Prep = mkPrep "mimo" genitive ;
spod_Prep : Prep; --under spod_Prep : Prep ; --under
spod_Prep = mkPrep "spod" genitive; spod_Prep = mkPrep "spod" genitive ;
u_Prep : Prep; --by, with (I was by Peter last sunday.) u_Prep : Prep ; --by, with (I was by Peter last sunday.)
u_Prep = mkPrep "u" genitive; u_Prep = mkPrep "u" genitive ;
wzdluz_Prep : Prep; --along wzdluz_Prep : Prep ; --along
wzdluz_Prep = mkPrep "wzdłuż" genitive; wzdluz_Prep = mkPrep "wzdłuż" genitive ;
z_Prep : Prep; --from (I come from Italy.), of/ from (The ring is made of silver.) z_Prep : Prep ; --from (I come from Italy.), of/ from (The ring is made of silver.)
z_Prep = mkPrep "z" genitive; z_Prep = mkPrep "z" genitive ;
zamiast_Prep : Prep; --instead of zamiast_Prep : Prep ; --instead of
zamiast_Prep = mkPrep "zamiast" genitive; zamiast_Prep = mkPrep "zamiast" genitive ;
znad_Prep : Prep; --over, above znad_Prep : Prep ; --over, above
znad_Prep = mkPrep "znad" genitive; znad_Prep = mkPrep "znad" genitive ;
zza_Prep : Prep; --behind zza_Prep : Prep ; --behind
zza_Prep = mkPrep "zza" genitive; zza_Prep = mkPrep "zza" genitive ;
-- Prepositions always with the dative. -- Prepositions always with the dative.
dzieki_Prep : Prep; -- thanks for dzieki_Prep : Prep ; -- thanks for
dzieki_Prep = mkPrep "dzięki" dative; dzieki_Prep = mkPrep "dzięki" dative ;
przeciw_Prep : Prep; -- against przeciw_Prep : Prep ; -- against
przeciw_Prep = mkPrep "przeciw" dative; przeciw_Prep = mkPrep "przeciw" dative ;
}; }