refactor verb forms

This commit is contained in:
Krasimir Angelov committed 2026-10-09 12:54:58 +02:00
1 parent 6ced542a7f
commit 8aa53d83f5
2 files changed
+34 -37

No files matched your search

+3 -3
View File
@@ -114,9 +114,9 @@ concrete DocumentationTel of Documentation = CatTel ** open
heading2 "Subjunctive" ++ heading2 "Subjunctive" ++
personTable verb VSubj ++ personTable verb VSubj ++
heading2 "Future" ++ heading2 "Future" ++
heading3 "Masculine" ++ personTable verb (VFuture Masc) ++ heading3 "Masculine" ++ personTable verb (VFuture Pos Masc) ++
heading3 "Feminine" ++ personTable verb (VFuture Fem) ++ heading3 "Feminine" ++ personTable verb (VFuture Pos Fem) ++
heading3 "Neuter" ++ personTable verb (VFuture Neutr) ; heading3 "Neuter" ++ personTable verb (VFuture Pos Neutr) ;
genderNumberTable : Verb -> (Gender -> Number -> VForm) -> Str = \verb,form -> genderNumberTable : Verb -> (Gender -> Number -> VForm) -> Str = \verb,form ->
frameTable ( frameTable (
+31 -34
View File
@@ -76,8 +76,8 @@ resource ResTel = ParamX ** open Prelude in {
| VStem | VStem
| VPresent Gender Number Person | VPresent Gender Number Person
| VPast Gender Number Person | VPast Gender Number Person
| VFuture Gender Number Person | VFuture Polarity Gender Number Person
| VNegFinite Bool Gender Number Person | VNegFinite
| VPresentPart | VPresentPart
| VRelativePresent | VRelativePresent
| VPastPart | VPastPart
@@ -110,11 +110,8 @@ resource ResTel = ParamX ** open Prelude in {
VReqFut => r ; VReqFut => r ;
VPresent g n p => presentFinite stem (Ag g n p) ; VPresent g n p => presentFinite stem (Ag g n p) ;
VPast g n p => pastFinite stem (Ag g n p) ; VPast g n p => pastFinite stem (Ag g n p) ;
VFuture g n p => futureFinite stem (Ag g n p) ; VFuture pol g n p => futureFinite stem pol (Ag g n p) ;
VNegFinite future g n p => case future of { VNegFinite => verbRoot stem + "లేదు" ;
True => verbRoot stem + negativeEnding (Ag g n p) ;
False => verbRoot stem + "లేదు"
} ;
VPresentPart => nonPastStem stem + "ున్న" ; VPresentPart => nonPastStem stem + "ున్న" ;
VRelativePresent => relativePresent stem ; VRelativePresent => relativePresent stem ;
VPastPart => pastStem stem + "ిన" ; VPastPart => pastStem stem + "ిన" ;
@@ -134,11 +131,8 @@ resource ResTel = ParamX ** open Prelude in {
VStem => verb ; VStem => verb ;
VPresent g n p => presentFinite verb (Ag g n p) ; VPresent g n p => presentFinite verb (Ag g n p) ;
VPast g n p => pastFinite verb (Ag g n p) ; VPast g n p => pastFinite verb (Ag g n p) ;
VFuture g n p => futureFinite verb (Ag g n p) ; VFuture pol g n p => futureFinite verb pol (Ag g n p) ;
VNegFinite future g n p => case future of { VNegFinite => root + "లేదు" ;
True => root + negativeEnding (Ag g n p) ;
False => root + "లేదు"
} ;
VPresentPart => nonPastStem verb + "ున్న" ; VPresentPart => nonPastStem verb + "ున్న" ;
VRelativePresent => relativePresent verb ; VRelativePresent => relativePresent verb ;
VPastPart => pastStem verb + "ిన" ; VPastPart => pastStem verb + "ిన" ;
@@ -235,17 +229,21 @@ resource ResTel = ParamX ** open Prelude in {
_ => pastStem verb + finiteEnding agr _ => pastStem verb + finiteEnding agr
} ; } ;
futureFinite : Str -> Agr -> Str = \verb,agr -> futureFinite : Str -> Polarity -> Agr -> Str = \verb,pol,agr ->
nonPastStem verb + case agr of { case pol of {
Ag _ Sg P1 => "ాను" ; Pos => nonPastStem verb + futureEnding agr ;
Ag _ Sg P2 => "ావు" ; Neg => verbRoot verb + negativeEnding agr
Ag Masc Sg P3 => "ాడు" ; } ;
Ag _ Sg P3 => "ుంది" ;
Ag _ Pl P1 => "ాము" ;
Ag Neutr Pl P3 => "ాయి" ;
Ag _ Pl _ => "ారు"
} ;
futureEnding : Agr -> Str = \agr -> case agr of {
Ag _ Sg P1 => "ాను" ;
Ag _ Sg P2 => "ావు" ;
Ag Masc Sg P3 => "ాడు" ;
Ag _ Sg P3 => "ుంది" ;
Ag _ Pl P1 => "ాము" ;
Ag Neutr Pl P3 => "ాయి" ;
Ag _ Pl _ => "ారు"
} ;
negativeEnding : Agr -> Str = \agr -> case agr of { negativeEnding : Agr -> Str = \agr -> case agr of {
Ag _ Sg P1 => "ను" ; Ag _ Sg P1 => "ను" ;
Ag _ Sg P2 => "వు" ; Ag _ Sg P2 => "వు" ;
@@ -262,12 +260,8 @@ resource ResTel = ParamX ** open Prelude in {
finitePresent : Verb -> Agr -> Str = \verb,agr -> finitePresent : Verb -> Agr -> Str = \verb,agr ->
case agr of {Ag g n p => verb.s ! VPresent g n p} ; case agr of {Ag g n p => verb.s ! VPresent g n p} ;
finiteFuture : Verb -> Agr -> Str = \verb,agr -> finiteFuture : Polarity -> Verb -> Agr -> Str = \pol,verb,agr ->
case agr of {Ag g n p => verb.s ! VFuture g n p} ; case agr of {Ag g n p => verb.s ! VFuture pol g n p} ;
finiteNegative : Verb -> VPHTense -> Agr -> Str = \verb,tense,agr ->
case agr of {Ag g n p => verb.s ! VNegFinite (case tense of {
VPFut => True ; _ => False}) g n p} ;
passiveV : Verb -> Verb = \verb -> { passiveV : Verb -> Verb = \verb -> {
s = verb.passive ; s = verb.passive ;
@@ -289,8 +283,8 @@ resource ResTel = ParamX ** open Prelude in {
VPImpPast => copulaPast agr ; VPImpPast => copulaPast agr ;
VPContPast => copulaPast agr ; VPContPast => copulaPast agr ;
VPPerfPast => copulaPast agr ; VPPerfPast => copulaPast agr ;
VPSubj => futureFinite "అవు" agr ; VPSubj => futureFinite "అవు" Pos agr ;
VPFut => futureFinite "అవు" agr VPFut => futureFinite "అవు" Pos agr
} ; inf = [] ; neg = []} } ; inf = [] ; neg = []}
} ; } ;
VPInf => {fin = "అవడం" ; inf = [] ; neg = []} ; VPInf => {fin = "అవడం" ; inf = [] ; neg = []} ;
@@ -396,17 +390,20 @@ resource ResTel = ParamX ** open Prelude in {
in in
case vh of { case vh of {
VPTense tense agr => case b of { VPTense tense agr => case b of {
Neg => {fin = finiteNegative verb tense agr ; inf = [] ; neg = []} ; Neg => case tense of {
VPFut => {fin = finiteFuture Neg verb agr ; inf = [] ; neg = []} ;
_ => {fin = verb.s ! VNegFinite ; inf = [] ; neg = []}
} ;
Pos => case tense of { Pos => case tense of {
VPGenPres => {fin = finiteFuture verb agr ; inf = [] ; neg = []} ; VPGenPres => {fin = finiteFuture Pos verb agr ; inf = [] ; neg = []} ;
VPImpPast => {fin = finitePast verb agr ; inf = [] ; neg = []} ; VPImpPast => {fin = finitePast verb agr ; inf = [] ; neg = []} ;
VPContPres => {fin = finitePresent verb agr ; inf = [] ; neg = []} ; VPContPres => {fin = finitePresent verb agr ; inf = [] ; neg = []} ;
VPContPast => {fin = finitePast verb agr ; inf = [] ; neg = []} ; VPContPast => {fin = finitePast verb agr ; inf = [] ; neg = []} ;
VPPerf => {fin = finitePast verb agr ; inf = [] ; neg = []} ; VPPerf => {fin = finitePast verb agr ; inf = [] ; neg = []} ;
VPPerfPres => {fin = finitePast verb agr ; inf = [] ; neg = []} ; VPPerfPres => {fin = finitePast verb agr ; inf = [] ; neg = []} ;
VPPerfPast => {fin = finitePast verb agr ; inf = [] ; neg = []} ; VPPerfPast => {fin = finitePast verb agr ; inf = [] ; neg = []} ;
VPSubj => {fin = finiteFuture verb agr ; inf = [] ; neg = []} ; VPSubj => {fin = finiteFuture Pos verb agr ; inf = [] ; neg = []} ;
VPFut => {fin = finiteFuture verb agr ; inf = [] ; neg = []} VPFut => {fin = finiteFuture Pos verb agr ; inf = [] ; neg = []}
} }
} ; } ;
{- The finite cases above deliberately precede the legacy form {- The finite cases above deliberately precede the legacy form