--# -path=.:../../prelude -- -- 1 Morpholical inflection of Noun and Verbs of Nepali -- -- by Dinesh Simkhada, Shafqat Virk - 2011 -- resource MorphoNep = ResNep ** open Prelude,Predef in { flags optimize=all ; coding = utf8; param {- For distinguishing root ending in -a- and rest of other. Root ending in -a/अ or h - is regarded as reg and rest ireg -} VCase = VReg | VIReg ; --1 Nouns oper mkN : (x1,_,_,_,_,_,_,_,_,_,_,x12 : Str) -> Gender -> NType -> NPerson -> Noun = \sn,sa,si,sd,sab,sl,pn,pa,pi,pd,pab,pl,g,t,h -> { s = table { Sg => table { Nom => sn ; Acc => sa ; Ins => si ; Dat => sd ; Abl => sab ; Loc => sl } ; Pl => table { Nom => pn ; Acc => pa ; Ins => pi ; Dat => pd ; Abl => pab ; Loc => pl } } ; g = g ; t = t ; h = h } ; -- TODO -- ?? NEED TO ADD CASE IF ENDS WITH 'o' (PG. 99 Jaya) -- Regular nouns mkNMF : Str -> Gender -> NType -> NPerson -> Noun ; mkNMF str g t h = mkN str (str + "लाई") (str + "ले") (str + "लाई") (str + "बाट") (str + "मा") (str + "हरु") (str + "हरुलाई") (str + "हरुले") (str + "हरुलाई") (str + "हरुबाट") (str + "हरुमा") g t h ; -- Regular Nouns mkNReg : Str -> NType -> NPerson -> Noun ; mkNReg str typ hnr = mkNMF str Masc typ hnr ; -- Faminine nouns mkNFem : Str -> NType -> NPerson -> Noun ; mkNFem str typ hnr = mkNMF str Fem typ hnr ; -- Uncountable nouns, which have same singular and plular form -- eg water mkNUnc : Str -> Gender -> NType -> NPerson -> Noun ; mkNUnc str g t h = mkN str (str + "लाई") (str + "ले") (str + "लाई") (str + "बाट") (str + "मा") str (str + "लाई") (str + "ले") (str + "लाई") (str + "बाट") (str + "मा") g t h ; -- Proper Names regN1 : Str -> Gender -> NType -> NPerson -> Noun ; regN1 str g t h = mkN str (str + "लाई") (str + "ले") (str + "लाई") (str + "बाट") (str + "मा") str str str str str str g t h ; -- pronouns makePron : (x1,_,_,_,_,x6 : Str) -> {s : Case => Str} = \n,ac,i,d,ab,l-> { s = table { Nom => n ; Acc => ac ; Ins => i ; Dat => d ; Abl => ab ; Loc => l } } ; makePronReg : Str -> {s : Case => Str} ; makePronReg str = makePron str (str + "लाई") (str + "ले") (str + "लाई") (str + "बाट") (str + "मा") ; --2. Derminers makeDet : Str -> Str -> Str -> Str -> Number -> Determiner = \s1,s2,s3, s4, n -> { s = table { Sg => table { Masc => s1 ; Fem => s2 } ; Pl => table { Masc => s3 ; Fem => s4 } } ; n = n } ; -- maIdetn helper makeIDet : Str -> Str -> {s : Gender => Str} = \s1,s2 -> { s = table { Masc => s1 ; Fem => s2 } } ; -- Quantifiers makeQuant : Str -> Str -> Str -> Str -> {s : Number => Gender => Str } = \sm,sf,pm,pf -> { s = table { Sg => table { Masc => sm ; Fem => sf } ; Pl => table { Masc => pm ; Fem => pf } } } ; -- Proposition makePrep : Str -> Preposition = \str -> {s = str } ** { lock_Prep = <>}; --3. Verbs mkVerb : (_: Str) -> Verb = \inf -> let root = (tk 2 inf) ; in { s = table { Root => root ; Inf => inf ; PVForm => (tk 1 inf) ; Imp => (mkImpForm root).s ; ProgRoot aspect number gender => (mkProgRoot root aspect number gender).s ; VF tense aspect polarity person number gender => case aspect of { Imperf => (mkVImperf root tense polarity person number gender).s ; Perf => (mkVPerf root tense polarity person number gender).s } } } ; --For the case of lets (lets sleep) mkImpForm : Str -> {s:Str} ; mkImpForm str = let vcase = (rootCheck str).vcase; root2 = (rootCheck str).root2 in { s = case vcase of { VReg => root2 + "ौँ" ; _ => root2 + "आँ" }; }; --For the progressive root case mkProgRoot : Str -> Aspect -> Number -> Gender -> {s : Str } = \root,aspect,number,gender -> let root1 = (rootCheck root).root1 ; root2 = (rootCheck root).root2 ; vcase = (rootCheck root).vcase in { s= case of { => (mkProgReg root2 aspect number gender).s ; <_, "जा"> => (mkProgIReg root aspect number gender).s ; <_, "हा"> => (mkProgIReg root aspect number gender).s ; <_, _> => (mkProgIReg root2 aspect number gender).s }; }; mkProgReg : Str -> Aspect -> Number -> Gender -> {s : Str } = \root2,aspect,number,gender -> { s = case of { => root2 + "दै" ; => root2 + "िरहेको" ; => root2 + "िरहेकि" ; => root2 + "िरहेका" }; }; mkProgIReg : Str -> Aspect -> Number -> Gender -> {s : Str } = \root,aspect,number,gender -> { s = case of { => root + "दै" ; => root + "इरहेको" ; => root + "इरहेकि" ; => root + "इरहेका" }; } ; --need to check for want_VV <- Not inflected correctly rootCheck : Str -> {root1:Str; root2:Str; vcase: VCase} = \root -> { {- Root inflection case 1. irregular case of Janu/जानु/go root = जा root1 = जान् root2 = ग 2. irregular case of Hunu/हुनु/Become root = हु root1 = हुन् root2 = भ 3. reg Verbs ending in Consonants - पढनु/to study root = पढ्, root1 = पढ root2 = पढ् <- original root = पढ्, root1 = पढ्, root2 = पढ <- changed to this make sure it doesn't break 4. Khanu/खानु/to eat, Dinu/दिनु /to Give root = खा root1 = खान् root2 = खा 5. Dhunu/धुनु/wash, Runu/रुनु/Cry root = धु root1 = धुन् root2 = धो 6. Aaunu/आउनु/to Come, Pathaunu/पठाउनु/to Send root = आउ root1 = आउँ root2 = आ -} root1 = case root of { "जा" => root + "न्" ; "हु" => root + "न्" ; rot + "्" => root ; rot + ("ह") => root + "न्" ; --cmnt rot + ("ा"|"ि"|"ी") => root + "न्" ; rot + ("े"|"ु"|"ू") => root + "न्" ; rot + ("उ"|"ऊ") => root + "ँ" ; _ => root } ; root2 = case root of { "जा" => "ग" ; "हु" => "भ" ; rot + "्" => rot ; rot + ("ा"|"ि"|"ी") => root ; rot + ("ह") => root + "न्" ; --cmnt rot + ("े"|"ु"|"ू") => rot + "ो" ; rot + ("उ"|"ऊ") => rot ; _ => root } ; vcase = case root of { rot + "्" => VReg; --rot + "ह" => VReg; _ => VIReg } } ; mkVImperf : Str -> VTense -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, t, po, pn, n, g -> let root1 = (rootCheck root).root1 ; root2 = (rootCheck root).root2 ; vcase = (rootCheck root).vcase ; in {s = case t of { NPresent => (mkVPreNP root root1 vcase po pn n g).s ; NPast Simpl => (mkVPstSNP root root2 vcase po pn n g).s ; NPast Hab => (mkVPstHNP root root1 vcase po pn n g).s ; --NPast Unknown => (mkVPstUNP root root2 vcase po pn n g).s ; NFuture Defin => (mkVFutDNP root po pn n g).s ; NFuture NDefin => (mkVFutNDNP root root2 vcase po pn n g).s } } ; mkVPerf : Str -> VTense -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, t, po, pn, n, g -> let root1 = (rootCheck root).root1 ; root2 = (rootCheck root).root2 ; vcase = (rootCheck root).vcase ; in {s = case t of { --it seems root has no use in these cases, root2 worsk for all --if no problem arises better to remove root parameter NPresent => (mkVPreP root root2 vcase po pn n g).s ; NPast Simpl => (mkVPstSP root root2 vcase po pn n g).s ; NPast Hab => (mkVPstHP root root2 vcase po pn n g).s ; --NPast Unknown => (mkVPstUP root root2 vcase po pn n g).s ; NFuture Defin => (mkVFutDefP root root2 vcase po pn n g).s ; NFuture NDefin => (mkVFutNDefP root root2 vcase po pn n g).s } }; -- Present, Nonperfective aspect, Non-progressive mode, mkVPreNP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root1, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPreNPReg root po pn n g).s ; VIReg => (mkVPreNPIReg root root1 po pn n g).s } } ; -- mkVPreNP Helper for VRrg case mkVPreNPReg : Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, po, pn, n, g -> {s = case of { -- Positive case => root + "छु" ; -- छु => root + "छौँ" ; -- छौं => root + "छस्" ; -- छस् => root + "छेस्" ; -- छेस् => root + "छौ" ; -- छौ => root + "छ्यौ" ; -- छ्यौ => root + "छौ" ; -- छौ => root + "छ" ; -- छ => root + "छे" ; -- छे => root + "छन्" ; -- छन् => root + "छिन्" ; -- छिन् => root + "छन्" ; -- छन् => root + "नुहुन्छ" ; -- नुहुन्छ -- Negative Case => root + "दिनँ" ; -- इनँ (पढ्दिनँ) => root + "दैनैँ" ; -- ऐनैँ (पढ्दैनैँ) => root + "दैनस्" ; -- ऐनस् (पढदैनस्) => root + "दिनस्" ; -- इनस् (पढदिनस्) => root + "दैनै" ; -- ऐनै => root + "दिनै" ; -- इनै => root + "दैनै" ; -- ऐनै => root + "दैन" ; -- ऐन => root + "दिन" ; -- इन => root + "दैन्न" ; -- ऐनन् => root + "दिन्न" ; -- इनन् => root + "दैन्न" ; -- ऐनन् => root + "नुहुन्न" -- नुहुन्न } } ; -- mkVPreNP Helper for VIRrg case mkVPreNPIReg : Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root1, po, pn, n, g -> {s = case of { -- Positive case => root1 + "छु" ; -- छु => root1 + "छौं" ; -- छौं => root1 + "छस्" ; -- छस् => root1 + "छेस्" ; -- छेस् => root1 + "छौ" ; -- छौ => root1 + "छ्यौ" ; -- छ्यौ => root1 + "छौ" ; -- छौ => root1 + "छ" ; -- छ => root1 + "छे" ; -- छे => root1 + "छन्" ; -- छन् => root1 + "छिन्" ; -- छिन् => root1 + "छन्" ; -- छन् => root + "नुहुन्छ" ; -- नुहुन्छ -- Negative Case => root + "ँदिनँ" ; -- इनँ (खाँदिनँ) => root + "ँदैनैँ" ; -- ऐनैँ (खाँदैनैँ) => root + "ँदैनस्" ; -- ऐनस् (आउँदैनस्) => root + "ँदिनस्" ; -- इनस् (खाँदिनस्) => root + "ँदैनै" ; -- ऐनै (खाँदैनै) => root + "ँदिनै" ; -- इनै => root + "ँदैनै" ; -- ऐनै => root + "ँदैन" ; -- ऐन => root + "ँदिन" ; -- इन (खाँदिन) => root + "ँदैन्न" ; -- ऐनन् => root + "ँदिन्न" ; -- इनन् => root + "ँदैन्न" ; -- ऐनन् => root + "ँनुहुन्‍न" -- नुहुन्‍न } } ; -- Past Simple, Nonprogressive mode, nonperfective aspect mkVPstSNP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPstSNPReg root root2 po pn n g).s ; VIReg => (mkVPstSNPIReg root root2 po pn n g).s } } ; -- mkVPstSNP Helper for VRrg case mkVPstSNPReg : Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, po, pn, n, g -> {s = case of { -- Positive case => root2 + "ेँ" ; -- एँ => root + "यौं" ; -- यौं => root2 + "िस्" ; -- इस् => root + "यौ" ; -- यौ => root + "यौ" ; -- यौ => root + "यो" ; -- यो => root2 + "ी" ; -- इ (पढी) => root2 + "े" ; -- ए (पढे) => root2 + "िन्" ; -- इन् (पढिन्) => root2 + "े" ; -- ए (पढे) => root + "नुभयो" ; -- नुभयो -- Negative case => root2 + "िनँ" ; -- इनँ => root2 + "ेनैँ" ; -- एनैँ => root2 + "िनस्" ; -- इनस् => root2 + "ेनै" ; -- एनै => root2 + "िनै" ; -- इनै => root2 + "ेनै" ; -- एनै => root2 + "ेन" ; -- एन => root2 + "िन" ; -- इन (पढिन) => root2 + "ेनन्" ; -- एनन् (पढेनन्) => root2 + "िनन्" ; -- इनन् (पढिनन्) => root2 + "ेनन्" ; -- एनन् (पढेनन्) => root + "नुभएन" -- नुभएन } } ; -- mkVPstSNP Helper for VIRrg case mkVPstSNPIReg : Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, po, pn, n, g -> {s = case of { -- Positive case => root2 + "एँ" ; -- एँ => root2 + "यौं" ; -- यौं => root2 + "इस्" ; -- इस् => root2 + "यौ" ; -- यौ => root2 + "यौ" ; -- यौ => root2 + "यो" ; -- यो => root2 + "ई" ; -- ई => root2 + "ए" ; -- ए => root2 + "इन्" ; -- इन् => root2 + "ए" ; -- ए => root + "नुभयो" ; -- नुभयो -- Negative case => root2 + "इनँ" ; -- इनँ => root2 + "एनैँ" ; -- एनैँ => root2 + "इनस्" ; -- इनस् => root2 + "एनै" ; -- एनै => root2 + "इनै" ; -- इनै => root2 + "एनै" ; -- एनै => root2 + "एन" ; -- एन => root2 + "इन" ; -- इन (पढिन) => root2 + "एनन्" ; -- एनन् (पढेनन्) => root2 + "इनन्" ; -- इनन् (पढिनन्) => root2 + "एनन्" ; -- एनन् (पढेनन्) => root + "नुभएन" -- नुभएन } } ; -- Past Habitual, Nonprogressive mode, nonperfective aspect mkVPstHNP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root1, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPstHNPGen root root1 po pn n g).s ; VIReg => (mkVPstHNPGen root1 root po pn n g).s } } ; -- mkVPstHNP helper, handles bith VReg and VIReg cases mkVPstHNPGen : Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root1, po, pn, n, g -> let neg = "दैन" ; -- दैन (TODO : CHECK FOR MAKE GENERIC FINCTION FOR POS AND NEG) in {s = case of { => root + "थें" ; -- थें => root + "थ्यौं" ; -- थ्यौं => root + "थिस्" ; -- थिस् => root + "थ्यौ" ; -- थ्यौ => root + "थ्यौ" ; -- थ्यौ => root + "थ्यो" ; -- थ्यो => root + "थी" ; -- थी => root + "थे" ; -- थे => root + "थिन्" ; -- थिन् => root + "थे" ; -- थे => root1 + "नुहुन्‌थ्यो" ; -- नुहुन्‌थ्यो => root + neg + "थें" ; -- थें => root + neg + "थ्यौं" ; -- थ्यौं => root + neg + "थिस्" ; -- थिस् => root + neg + "थ्यौ" ; -- थ्यौ => root + neg + "थ्यौ" ; -- थ्यौ => root + neg + "थ्यो" ; -- थ्यो => root + neg + "थी" ; -- थी => root + neg + "थे" ; -- थे => root + neg + "थीन्" ; -- थिन् => root + neg + "थे" ; -- थे => root1 + "नुहुँदैनथ्यो" -- नुहुँदैनथ्यो } }; {- -- Past Unknown, Nonprogressive mode, nonperfective aspect mkVPstUNP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \ root, root2, vc, po, p, n, g -> {s = case vc of { VReg => case po of { Pos => (mkVPstUNPReg root root2 "" p n g).s ; Neg => (mkVPstUNPReg root root2 "न" p n g).s } ; VIReg => case po of { Pos => (mkVPstUNPIReg root root2 "" p n g).s ; Neg => (mkVPstUNPIReg root root2 "न" p n g).s } } }; -- mkVPstUNP helper for VReg case mkVPstUNPReg : Str -> Str -> Str -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, na, pn, nu, g -> {s = case of { => root2 + "े" + na + "छु" ; -- एछु => root2 + "ि" + na + "छु" ; -- इछु => root2 + "े" + na + "छौँ" ; -- एछौँ => root2 + "े" + na + "छस्" ; -- एछस् => root2 + "ि" + na + "छस्" ; -- इछस् => root2 + "े" + na + "छौ" ; -- एछौ => root2 + "ि" + na + "छौ" ; -- इछौ => root2 + "े" + na + "छौ" ; -- एछौ => root2 + "े" + na + "छ" ; -- एछ => root2 + "ि" + na + "छ" ; -- इछ => root2 + "े" + na + "छन्" ; -- एछन् => root2 + "ि" + na + "छन्" ; -- इछन् => root2 + "े" + na + "छन्" ; -- एछन् < _, _, _> => root + "नुभए" + na +"छ" -- नुभएछ } } ; -- mkVPstUNP helper for VIReg case mkVPstUNPIReg : Str -> Str -> Str -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, na, pn, nu, g -> {s = case of { => root2 + "ए" + na + "छु" ; -- एछु => root2 + "इ" + na + "छु" ; -- इछु => root2 + "ए" + na + "छौँ" ; -- एछौँ => root2 + "ए" + na + "छस्" ; -- एछस् => root2 + "इ" + na + "छस्" ; -- इछस् => root2 + "ए" + na + "छौ" ; -- एछौ => root2 + "इ" + na + "छौ" ; -- इछौ => root2 + "ए" + na + "छौ" ; -- एछौ => root2 + "ए" + na + "छ" ; -- एछ => root2 + "इ" + na + "छ" ; -- इछ => root2 + "ए" + na + "छन्" ; -- एछन् => root2 + "इ" + na + "छन्" ; -- इछन् => root2 + "ए" + na + "छन्" ; -- एछन् < _, _, _> => root + "नुभए" + na +"छ" -- नुभएनछ } } ; -} -- Future Definitive, Nonprogressive mode, nonperfective aspect -- Handles Both cases mkVFutDNP : Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, po, pn, n, g -> {s = case of { -- Positive case => root + "नेछु" ; -- नेछु => root + "नेछौं" ; -- नेछौं => root + "नेछस्" ; -- नेछस् => root + "नेछौं" ; -- नेछौ => root + "नेछौं" ; -- नेछौ => root + "नेछ" ; -- नेछ => root + "नेछन्" ; -- नेछन् => root + "नेछन्" ; -- नेछन् => root + "नेछिन्" ; -- नेछिन् => root + "नेछिन्" ; -- नेछन् => root + "नुहुनेछ" ; -- नुहुनेछ -- Negative Case => root + "नेछैन" ; -- नेछैन => root + "नेछैनैँ" ; -- नेछैनैँ => root + "नेछैनस्" ; -- नेछैनस् => root + "नेछैनै" ; -- नेछैनै => root + "नेछैनै" ; -- नेछैनै => root + "नेछैन्" ; -- नेछैन् => root + "नेछैनन्" ; -- नेछैनन् => root + "नेछैनन्" ; -- नेछैनन् => root + "नेछैनै" ; -- नेछैनै => root + "नुहुनेछैन्" -- नुहुनेछैन् } } ; -- Future Nondefinitive, Nonperfective aspect, NonPregressive mode mkVFutNDNP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVFutNDNPReg root root2 po pn n g).s ; VIReg => (mkVFutNDNPIReg root2 po pn n g).s } } ; -- mkVFutNDNP helper for VReg case mkVFutNDNPReg : Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, po, pn, n, g -> {s = case of { => root2 + "ुँला" ; -- उँला => root2 + "ौँला" ; -- आँला => root + "‍लास्" ; -- लास् => root + "लीस्" ; -- लिस् => root2 + "ौला" ; -- औला => root2 + "ौलि" ; -- औलि => root + "ला" ; -- ला => root + "ली" ; -- ली => root + "लान्" ; -- लान् => root + "लीन्" ; -- लिन् => root + "लान्" ; -- लान् => root + "‍नुहोला" ; -- नुहोला -- TODO : NOT CLEAR DEFINITION IN BOOK => "टुडु" } } ; -- mkVFutNDNP helper for VIReg case mkVFutNDNPIReg : Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, po, pn, n, g -> {s = case of { => root + "उँला" ; -- उँला => root + "औँला" ; -- आँला => root + "लास्" ; -- लास् => root + "लिस्" ; -- लिस् => root + "औला" ; -- औला => root + "औलि" ; -- औलि => root + "ला" ; -- ला => root + "ली" ; -- ली => root + "लान्" ; -- लान् => root + "लिन्" ; -- लिन् => root + "लान्" ; -- लान् => root + "नुहोला" ; -- नुहोला -- TODO : NOT CLEAR DEFINITION IN BOOK => "टुडु" } } ; -- Past Simple, Perfective aspect, Nonprogressive Mode mkVPstSP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPstSPGen root2 "ेको" "ेकि" "ेका" po pn n g).s ; VIReg => (mkVPstSPGen root2 "एको" "एकि" "एका" po pn n g).s } } ; -- mkVPstSP Helper handles both VReg and VIreg cases mkVPstSPGen : Str -> Str -> Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, sreg, sfem, spl, po, pn, n, g -> {s = case of { -- Positive case => root + sreg + "थिएँ" ; -- थिएँ => root + spl + "थियौँ" ; -- थियौँ => root + sreg + "थिइस्" ; -- थिइस् => root + sfem + "थिइस्" ; -- थिइस् => root + spl + "थियौ" ; -- थियौ => root + spl + "थियौ" ; -- थियौ => root + sreg + "थियो" ; -- थियो => root + sfem + "थिई" ; --थिई => root + spl + "थिए" ; -- थिए => root + sfem + "थिइन्" ; -- थिइन् => root + spl + "थिए" ; -- थिए => root + sreg + "हुनुहुन्‌थ्यो" ; -- हुनुहुन्‌थ्यो (TODO: CONFIRM CORRECT) -- Negative case => root + sreg +"थिइनँ" ; -- => root + spl + "थिएनैँ" ; -- => root + sreg + "थिइनस्" ; -- => root + sfem + "थिइनस्" ; -- => root + spl + "थिएनै" ; -- => root + spl + "थिनै" ; -- => root + sreg + "थिएन" ; -- => root + sfem + "थिइङ" ; -- => root + spl + "थिएनन्" ; -- => root + sfem + "थिइनन्" ; -- => root + spl + "थिएनन्" ; -- => root + sreg + "हुनुहुन्‌नथ्यो" -- हुनुहुन्‌नथ्यो (TODO: CONFIRM CORRECT) } }; -- Past Habitual, Perfective aspect, Nonprogressive Mode mkVPstHP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPstHPGen root2 "ेको" "ेकि" "ेका" po pn n g).s ; VIReg => (mkVPstHPGen root2 "एको" "एकि" "एका" po pn n g).s } } ; -- mkVPstSP Helper handles both VReg and VIreg cases mkVPstHPGen : Str -> Str -> Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, sreg, sfem, spl, po, pn, n, g -> {s = case of { => root + sreg + "हुन्थेँ" ; -- हुन्थेँ => root + spl + "हुन्थौँ" ; -- हुन्थौँ => root + sreg + "हुन्थिस्" ; -- हुन्थिस् => root + sfem + "हुन्थइस्" ; -- हुन्थिस् => root + spl + "हुन्थ्यौ" ; -- हुन्थ्यौ => root + spl + "हुन्थ्यौ" ; -- हुन्थ्यौ => root + sreg + "हुन्‌थ्यौ" ; -- हुन्‌थ्यौ => root + sfem + "हुन्थी" ; -- हुन्थी => root + spl + "हुन्थे" ; -- हुन्थे => root + sfem + "हुन्‌थि" ; -- हुन्थि => root + spl + "हुन्थे" ; -- हुन्थे => root + sreg + "हुनुहुन्थ्यो" ; -- (TODO : हुनुहुन्थ्यो need to Confirm) -- Negative case (TODO) => root + sreg + "हुन्थेँ" ; -- हुन्थेँ => root + spl + "हुन्थौँ" ; -- हुन्थौँ => root + sreg + "हुन्थिइस्" ; -- हुन्थिइस् ???? G Check => root + sfem + "हुन्थिइस्" ; -- हुन्थिइस् => root + spl + "हुन्थियौ" ; -- हुन्थियौ / or हुन्थ्यौ (hunx:Tx:yw) => root + spl + "हुन्थियौ" ; -- हुन्थियौ / or हुन्थ्यौ (hunx:Tx:yw) => root + sreg + "हुन्थ्यौ" ; -- हुन्थ्यौ / (थियो ????) => root + sfem + "हुन्थी" ; -- हुन्थी/ (थिई ????) => root + spl + "हुन्थे" ; -- हुन्थे / (थिए) => root + sfem + "हुन्थि" ; -- हुन्थि => root + spl + "हुन्थे" ; -- हुन्थे / (थिए) => root + sreg + "हुनुहुन्‌नथ्यो" -- हुनुहुन्‌नथ्यो (TODO: CONFIRM CORRECT) } }; {- -- Past Unknown, Perfective aspect, Nonprogressive Mode mkVPstUP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPstHPGen root2 "ेको" "ेकि" "ेका" po pn n g).s ; VIReg => (mkVPstHPGen root2 "एको" "एकि" "एका" po pn n g).s } } ; -- mkVPstUP Helper handles both VReg and VIreg cases mkVPstUPGen : Str -> Str -> Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, sreg, sfem, spl, po, pn, n, g -> {s = case of { => root + sreg + "रहेछु" ; -- रहेछु => root + sfem + "रहेछु" ; -- रहेछु (खाएकिरहेछु) => root + spl + "रहेछौँ" ; -- रहेछौँ => root + sreg + "रहिछस्" ; --रहिछस् => root + sfem + "रहिछस्" ; --रहिछस् => root + spl + "रहेछौ" ; -- रहेछौ => root + spl + "रहेछौ" ; -- रहेछौ => root + sfem + "रहिछौ" ; -- रहिछौ (छ्यौ ????) => root + spl + "रहेछौ" ; -- रहेछौ => root + sreg + "रहेछ" ; -- रहेछ => root + sfem + "रहिछ" ; -- रहिछ => root + spl + "रहेछन्" ; -- रहेछन् => root + sfem + "रहिछीन्" ; -- रहिछीन् => root + spl + "रहेछन्" ; -- रहेछन् => root + spl + "रहेछन्" ; -- रहेछन् => root + sreg + "हुनुहुदोरहेछ" ; -- हुनुहुदोरहेछ/नुभएकोरहेछ(nuBe:korhec) -- Negative Case (TODO) => "टुडु" -- TODO-- } }; -} -- Present, Perfective aspect, Nonprogressive Mode mkVPreP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVPreGen root2 "ेको" "ेकि" "ेका" po pn n g).s ; VIReg => (mkVPreGen root2 "एको" "एकि" "एका" po pn n g).s } } ; -- mkVPreP helper handles both VReg and VIreg cases mkVPreGen : Str -> Str -> Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, sreg, sfem, spl, po, pn, n, g -> {s = case of { => root + sreg + "छु" ; -- छु => root + spl + "छौं" ; -- छौं => root + sreg + "छस्" ; -- छस् => root + sfem + "छेस्" ; -- छेस् => root + spl + "छौ" ; -- छौ => root + sfem + "छ्यौ" ; --छ्यौ => root + spl + "छौ" ; -- छौ => root + sreg + "छ" ; -- छ => root + sfem + "छे" ; -- छे => root + spl + "छन्" ; -- छन् => root + sfem + "छिन्" ; -- छिन् => root + spl + "छन्" ; -- छन् => root + sreg + "हुनुहुन्छ" ; -- हुनुहुन्छ -- Negative Case (TODO) => "टुडु" -- TODO-- } }; -- Future Definitive, Perfective aspect, Nonprogressive Mode mkVFutDefP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVFutDefGen root2 "ेको" "ेकि" "ेका" po pn n g).s ; VIReg => (mkVFutDefGen root2 "एको" "एकि" "एका" po pn n g).s } } ; -- mkVFutDef helper handles both VReg and VIreg cases mkVFutDefGen : Str -> Str -> Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, sreg, sfem, spl, po, pn, n, g -> {s = case of { => root + sreg + ("हुने"+"छु") ; -- हुनेछु => root + spl + "हुनेछौँ" ; -- हुनेछौँ => root + sreg + "हुनेछस्" ; -- हुनेछस् => root + sfem + "हुनेछेस्" ; -- हुनेछेस् => root + spl + "हुनेछौ" ; -- हुनेछौ => root + sfem + "हुनेछ्यौ" ; -- हुनेछ्यौ => root + spl + "हुनेछौ" ; -- हुनेछौ => root + sreg + "हुनेछ" ; -- हुनेछ => root + sfem + "हुन्छे" ; -- हुन्छे => root + spl + "हुनेछन्" ; -- हुनेछन् => root + sfem + "हुनेछिन्" ; -- हुनेछिन् => root + spl + "हुनेछन्" ; -- हुनेछन् => root + sreg + "हुनुहुनेछ" ; -- हुनुहुनेछ -- Negative Case (TODO) => "टुडु" -- TODO-- } }; -- Future Nondefinitive, Perfective aspect, Nonprogressive Mode mkVFutNDefP : Str -> Str -> VCase -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, root2, vc, po, pn, n, g -> {s = case vc of { VReg => (mkVFutDefGen root2 "ेको" "ेकि" "ेका" po pn n g).s ; VIReg => (mkVFutDefGen root2 "एको" "एकि" "एका" po pn n g).s } } ; -- Helper mkVFutNDef handles both VReg and VIreg cases mkVFutNDefGen : Str -> Str -> Str -> Str -> Polarity -> NPerson -> Number -> Gender -> {s:Str} = \root, sreg, sfem, spl, po, pn, n, g -> {s = case of { => root + sreg + "हुँला" ; -- हुँला => root + spl + "हौँलाँ" ; -- हौँलाँ => root + sreg + "होलास्" ; -- होलास् => root + sfem + "होलिस्" ; -- होलिस् => root + spl + "हौला" ; -- हौला => root + sfem + "होलि" ; -- होलि => root + spl + "हौला" ; -- हौला => root + sreg + "होला" ; -- होला => root + sfem + "होली" ; -- होली => root + spl + "होलान्" ; -- होलान् => root + sfem + "होलिन्" ; -- होलिन् => root + spl + "होलान्" ; -- होलान् => root + sreg + "हुनुहोला" ; -- हुनुहोला -- Negative Case (TODO) => "टुडु" -- TODO-- } }; -- TODO - Refactor IntPronForm = {s: Case => Str}; mkIntPronForm : (x1,x2,x3,x4:Str) -> IntPronForm = \y1,y2,y3,y4 -> { s = table { Nom => y1; _ => y2 } }; }