forked from GitHub/gf-rgl
(Ara) Add verb paradigm for defective v1 with perf. vowel i
This commit is contained in:
@@ -280,7 +280,7 @@ resource ParadigmsAra = open
|
|||||||
l = dp 2 rootStr } in --last rootStr
|
l = dp 2 rootStr } in --last rootStr
|
||||||
case <l, root.c> of {
|
case <l, root.c> of {
|
||||||
<"ّ",_> => v1geminate rootStr vPerf vImpf ;
|
<"ّ",_> => v1geminate rootStr vPerf vImpf ;
|
||||||
<"و"|"ي",_> => v1defective root vImpf ;
|
<"و"|"ي",_> => v1defective root vPerf vImpf ;
|
||||||
<_,"و"|"ي"> => v1hollow root vImpf ;
|
<_,"و"|"ي"> => v1hollow root vImpf ;
|
||||||
_ => v1sound root vPerf vImpf
|
_ => v1sound root vPerf vImpf
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -232,33 +232,45 @@ oper
|
|||||||
verbHollow : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
verbHollow : (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Verb =
|
||||||
\xAf,xif,xyf,xuf,axAf,axaf,uxAf,uxaf,xaf,xAf',ppart ->
|
\xAf,xif,xyf,xuf,axAf,axaf,uxAf,uxaf,xaf,xAf',ppart ->
|
||||||
let { perfPattern = patHollowPerf xAf xif xyf xuf ;
|
let { perfPattern = patHollowPerf xAf xif xyf xuf ;
|
||||||
impfPattern = patHollowImpf axAf axaf uxAf uxaf ;
|
impfPattern = patHollowImpf axAf axaf uxAf uxaf ;
|
||||||
impPattern = patHollowImp axaf xAf' ;
|
impPattern = patHollowImp axaf xAf' ;
|
||||||
jusPattern = patHollowJus axaf axAf uxaf uxAf ;
|
jusPattern = patHollowJus axaf axAf uxaf uxAf ;
|
||||||
} in
|
} in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
VPerf v pgn => perfPattern ! v ! pgn + suffixPerf ! pgn ;
|
VPerf v pgn => perfPattern ! v ! pgn + suffixPerf ! pgn ;
|
||||||
VImpf Ind v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfInd ! pgn ;
|
VImpf Ind v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfInd ! pgn ;
|
||||||
VImpf Cnj v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfCJ Cnj ! pgn ;
|
VImpf Cnj v pgn => prefixImpf ! pgn + impfPattern ! v ! pgn + suffixImpfCJ Cnj ! pgn ;
|
||||||
VImpf Jus v pgn => prefixImpf ! pgn + jusPattern ! v ! pgn + suffixImpfCJ Jus ! pgn ;
|
VImpf Jus v pgn => prefixImpf ! pgn + jusPattern ! v ! pgn + suffixImpfCJ Jus ! pgn ;
|
||||||
VImp g n => impPattern ! g ! n + suffixImpfCJ Jus ! (Per2 g n);
|
VImp g n => impPattern ! g ! n + suffixImpfCJ Jus ! (Per2 g n);
|
||||||
VPPart => ppart
|
VPPart => ppart
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
--macro for defective verbs:
|
--macro for defective verbs:
|
||||||
verbDef: (_,_,_,_,_,_,_,_,_,_,_ : Str) -> Vowel -> Verb =
|
verbDef : DefForms -> Vowel -> Verb =
|
||||||
\rama,ramay,rumi,rumu,rumiy,armi,armu,urma,Irmi,Irmu,ppart,vowel ->
|
\vforms,vImpf ->
|
||||||
let {
|
let {
|
||||||
patPerf = patDefPerf rama ramay rumi rumu rumiy ;
|
rama = vforms ! 0 ; -- VPerf Act (Per3 Masc Sg)
|
||||||
patImpfAct = patDefImpfAct armi armu ;
|
ramay = vforms ! 1 ; -- VPerf Act (Per3 Fem Pl)
|
||||||
patImp = patDefImp Irmi Irmu
|
rumi = vforms ! 2 ; -- VPerf Pas (Per3 _ Sg)
|
||||||
|
rumu = vforms ! 3 ; -- VPerf Pas (Per3 Masc Pl)
|
||||||
|
rumiy = vforms ! 4 ; -- VPerf Pas (Per3 Fem Pl)
|
||||||
|
armi = vforms ! 5 ; -- VImpf _ Act (Per1 _ _ | Per2/3 Fem _ | Per2/3 Masc Sg)
|
||||||
|
armu = vforms ! 6 ; -- VImpf _ Act (Per2/3 Masc Pl)
|
||||||
|
urma = vforms ! 7 ; -- VImpf _ Pas
|
||||||
|
Irmi = vforms ! 8 ; -- VImp Masc Sg | VImp Fem _
|
||||||
|
Irmu = vforms ! 9 ; -- VImp Masc Pl
|
||||||
|
ppart = vforms ! 10 ; -- VPPart
|
||||||
|
|
||||||
|
patPerf = patDefPerf rama ramay rumi rumu rumiy ;
|
||||||
|
patImpfAct = patDefImpfAct armi armu ;
|
||||||
|
patImp = patDefImp Irmi Irmu
|
||||||
} in
|
} in
|
||||||
{ s = table {
|
{ s = table {
|
||||||
VPerf v pgn => patPerf ! v ! pgn + (suffixPerfDef v) ! pgn ;
|
VPerf v pgn => patPerf ! v ! pgn + (suffixPerfDef v) ! pgn ;
|
||||||
VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + (suffixImpfDef Act vowel) ! m ! pgn ;
|
VImpf m Act pgn => prefixImpf ! pgn + patImpfAct ! pgn + (suffixImpfDef Act vImpf) ! m ! pgn ;
|
||||||
VImpf m Pas pgn => prefixImpf ! pgn + urma + (suffixImpfDef Pas vowel) ! m ! pgn ;
|
VImpf m Pas pgn => prefixImpf ! pgn + urma + (suffixImpfDef Pas vImpf) ! m ! pgn ;
|
||||||
VImp g n => patImp ! g ! n + (suffixImpfDef Act vowel) ! Jus ! (Per2 g n) ;
|
VImp g n => patImp ! g ! n + (suffixImpfDef Act vImpf) ! Jus ! (Per2 g n) ;
|
||||||
VPPart => ppart
|
VPPart => ppart
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
@@ -268,15 +280,15 @@ oper
|
|||||||
Act =>
|
Act =>
|
||||||
table {
|
table {
|
||||||
Per3 Fem Pl => ramay ;
|
Per3 Fem Pl => ramay ;
|
||||||
Per3 _ _ => rama ;
|
Per3 _ _ => rama ;
|
||||||
_ => ramay
|
_ => ramay
|
||||||
} ;
|
} ;
|
||||||
Pas =>
|
Pas =>
|
||||||
table {
|
table {
|
||||||
Per3 Masc Pl => rumu ;
|
Per3 Masc Pl => rumu ;
|
||||||
Per3 Fem Pl => rumy ;
|
Per3 Fem Pl => rumy ;
|
||||||
Per3 _ _ => rumi ;
|
Per3 _ _ => rumi ;
|
||||||
_ => rumy
|
_ => rumy
|
||||||
}
|
}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -284,15 +296,15 @@ oper
|
|||||||
patDefImpfAct : (_,_ : Str) -> PerGenNum => Str = \rmi,rmu ->
|
patDefImpfAct : (_,_ : Str) -> PerGenNum => Str = \rmi,rmu ->
|
||||||
table {
|
table {
|
||||||
Per3 Masc Pl => rmu ;
|
Per3 Masc Pl => rmu ;
|
||||||
Per2 Masc Pl => rmu ;
|
Per2 Masc Pl => rmu ;
|
||||||
_ => rmi
|
_ => rmi
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
patDefImp : (_,_ : Str) -> Gender => Number => Str = \rmi, rmu ->
|
patDefImp : (_,_ : Str) -> Gender => Number => Str = \rmi, rmu ->
|
||||||
table {
|
table {
|
||||||
Masc => table {Pl => rmu ; _ => rmi} ;
|
Masc => table {Pl => rmu ; _ => rmi} ;
|
||||||
_ => table {_ => rmi}
|
_ => table {_ => rmi}
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
|
|
||||||
@@ -368,18 +380,18 @@ v1sound : Root3 -> Vowel -> Vowel -> Verb =
|
|||||||
let {
|
let {
|
||||||
qf = {f = fcl.c ; c = fcl.l} ;
|
qf = {f = fcl.c ; c = fcl.l} ;
|
||||||
qif = mkBilit (fvc ! vImpf) qf;
|
qif = mkBilit (fvc ! vImpf) qf;
|
||||||
katab = mkStrong (patV1Perf ! vPerf) fcl ;
|
katab = mkStrong (patV1Perf ! vPerf) fcl ;
|
||||||
kutib = mkStrong fucil fcl ; --FIXME no passive if vPerf == u
|
kutib = mkStrong fucil fcl ; --FIXME no passive if vPerf == u
|
||||||
ktub = mkStrong (patV1Impf ! vImpf) fcl ;
|
ktub = mkStrong (patV1Impf ! vImpf) fcl ;
|
||||||
aktub = "َ" +
|
aktub = "َ" +
|
||||||
case fcl.f of {
|
case fcl.f of {
|
||||||
"و"|"ي" => qif ;
|
"و"|"ي" => qif ;
|
||||||
_ => ktub
|
_ => ktub
|
||||||
};
|
};
|
||||||
uktab = mkStrong ufcal fcl ;
|
uktab = mkStrong ufcal fcl ;
|
||||||
euktub = case fcl.f of {
|
euktub = case fcl.f of {
|
||||||
"؟"|"و"|"ي" => qif ;
|
"؟"|"و"|"ي" => qif ;
|
||||||
_ => prefixImp ! vImpf + ktub
|
_ => prefixImp ! vImpf + ktub
|
||||||
};
|
};
|
||||||
maktUb = mkStrong mafcUl fcl
|
maktUb = mkStrong mafcUl fcl
|
||||||
} in
|
} in
|
||||||
@@ -446,52 +458,88 @@ v1geminate : Str -> Vowel -> Vowel -> Verb =
|
|||||||
patGem1 : Vowel => Pattern =
|
patGem1 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
a => facal ;
|
a => facal ;
|
||||||
u => facul ;
|
u => facul ;
|
||||||
i => facil
|
i => facil
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patGem2 : Vowel => Pattern =
|
patGem2 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fucc ;
|
u => fucc ;
|
||||||
a => facc ;
|
a => facc ;
|
||||||
i => ficc --no such verb probably exists
|
i => ficc --no such verb probably exists
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patGem3 : Vowel => Pattern =
|
patGem3 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fcul ;
|
u => fcul ;
|
||||||
a => fcal ;
|
a => fcal ;
|
||||||
i => fcil --no such verb probably exists
|
i => fcil --no such verb probably exists
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
v1defective : Root3 -> Vowel -> Verb =
|
DefForms : Type = Predef.Ints 10 => Str ;
|
||||||
\rmy,vowel ->
|
toDefForms : (x1,_,_,_,_,_,_,_,_,_,x11 : Str) -> DefForms =
|
||||||
let {
|
\rama,ramay,rumi,rumu,rumiy,armi,armu,urma,eirmi,eirmu,marmiy ->
|
||||||
rama = mkDefective faca rmy ;
|
table {
|
||||||
ramay = mkStrong facalo rmy ;
|
0 => rama ;
|
||||||
rumi = mkDefective fuci rmy ;
|
1 => ramay ;
|
||||||
rumu = mkDefective fucu rmy ;
|
2 => rumi ;
|
||||||
rumiy = mkStrong fucilo rmy ;
|
3 => rumu ;
|
||||||
rmi = mkDefective (patDef1 ! vowel) rmy ;
|
4 => rumiy ;
|
||||||
armi = "َ" + rmi ;
|
5 => armi ;
|
||||||
rmu = mkDefective (patDef2 ! vowel) rmy ;
|
6 => armu ;
|
||||||
armu = "َ" + rmu ;
|
7 => urma ;
|
||||||
urma = mkDefective ufca rmy ;
|
8 => eirmi ;
|
||||||
eirmi = prefixImp ! vowel + rmi;
|
9 => eirmu ;
|
||||||
eirmu = prefixImp ! vowel + rmu;
|
10 => marmiy
|
||||||
marmiy = mkStrong mafcil rmy
|
} ;
|
||||||
} in verbDef rama ramay rumi rumu rumiy armi armu urma eirmi eirmu marmiy vowel ;
|
|
||||||
|
|
||||||
|
def1Forms_vPerfA : Root3 -> Vowel -> DefForms = \rmy,vImpf ->
|
||||||
|
let {
|
||||||
|
rama = mkDefective faca rmy ;
|
||||||
|
ramay = mkStrong facalo rmy ;
|
||||||
|
rumi = mkDefective fuci rmy ;
|
||||||
|
rumu = mkDefective fucu rmy ;
|
||||||
|
rumiy = mkStrong fucilo rmy ;
|
||||||
|
rmi = mkDefective (patDef1 ! vImpf) rmy ;
|
||||||
|
armi = "َ" + rmi ;
|
||||||
|
rmu = mkDefective (patDef2 ! vImpf) rmy ;
|
||||||
|
armu = "َ" + rmu ;
|
||||||
|
urma = mkDefective ufca rmy ;
|
||||||
|
eirmi = prefixImp ! vImpf + rmi;
|
||||||
|
eirmu = prefixImp ! vImpf + rmu;
|
||||||
|
marmiy = mkStrong mafcil rmy
|
||||||
|
} in toDefForms rama ramay rumi rumu rumiy armi armu urma eirmi eirmu marmiy ;
|
||||||
|
|
||||||
|
v1defective : Root3 -> Vowel -> Vowel -> Verb = \rmy,vPerf,vImpf ->
|
||||||
|
case vPerf of {
|
||||||
|
i => v1defective_i rmy vImpf ;
|
||||||
|
_ => v1defective_a rmy vImpf
|
||||||
|
} ;
|
||||||
|
|
||||||
|
v1defective_a : Root3 -> Vowel -> Verb = \rmy,vImpf ->
|
||||||
|
let vforms = def1Forms_vPerfA rmy vImpf
|
||||||
|
in verbDef vforms vImpf ;
|
||||||
|
|
||||||
|
v1defective_i : Root3 -> Vowel -> Verb = \bqy,vImpf -> -- IL (conjugation 1d4)
|
||||||
|
let vforms_a = def1Forms_vPerfA bqy vImpf ;
|
||||||
|
baqI = mkDefective facIl bqy ;
|
||||||
|
baqiy = mkDefective facil bqy ;
|
||||||
|
vforms_i = table { 0 => baqI ;
|
||||||
|
1 => baqiy ;
|
||||||
|
x => vforms_a ! x } ;
|
||||||
|
in verbDef vforms_i vImpf ;
|
||||||
|
|
||||||
patDef1 : Vowel => Pattern =
|
patDef1 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fcu ;
|
u => fcu ;
|
||||||
a => fca ;
|
a => fca ;
|
||||||
i => fci
|
i => fci
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patDef2 : Vowel => Pattern =
|
patDef2 : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
a => fca ;
|
a => fca ;
|
||||||
_ => fcu
|
_ => fcu
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
@@ -519,7 +567,7 @@ v2defective : Root3 -> Verb = \gny ->
|
|||||||
ugannu = "ُ" + gannu;
|
ugannu = "ُ" + gannu;
|
||||||
uganna = "ُ" + ganna;
|
uganna = "ُ" + ganna;
|
||||||
mugannaY = "مُ" + ganna + "ى"
|
mugannaY = "مُ" + ganna + "ى"
|
||||||
} in verbDef ganna gannay gunni gunnu gunniy uganni ugannu uganna ganni gannu mugannaY i;
|
} in verbDef (toDefForms ganna gannay gunni gunnu gunniy uganni ugannu uganna ganni gannu mugannaY) i;
|
||||||
|
|
||||||
v3sound : Root3 -> Verb =
|
v3sound : Root3 -> Verb =
|
||||||
\tbc ->
|
\tbc ->
|
||||||
@@ -547,21 +595,21 @@ v4sound : Root3 -> Verb =
|
|||||||
|
|
||||||
v4defective : Root3 -> Verb = \cTy ->
|
v4defective : Root3 -> Verb = \cTy ->
|
||||||
let {
|
let {
|
||||||
cTa = mkDefective fca cTy;
|
cTa = mkDefective fca cTy;
|
||||||
cTu = mkDefective fcu cTy;
|
cTu = mkDefective fcu cTy;
|
||||||
cTi = mkDefective fci cTy;
|
cTi = mkDefective fci cTy;
|
||||||
eacTa = "أَ" + cTa;
|
eacTa = "أَ" + cTa;
|
||||||
eacTay = mkStrong eafcal cTy ;
|
eacTay = mkStrong eafcal cTy ;
|
||||||
ucTi = "ُ" + cTi;
|
ucTi = "ُ" + cTi;
|
||||||
eucTi = "أُ" + cTi;
|
eucTi = "أُ" + cTi;
|
||||||
ucTu = "ُ" + cTu;
|
ucTu = "ُ" + cTu;
|
||||||
eucTu = "أُ" + cTu;
|
eucTu = "أُ" + cTu;
|
||||||
eucTiy = mkStrong eufcil cTy ;
|
eucTiy = mkStrong eufcil cTy ;
|
||||||
ucTa = "ُ" + cTa;
|
ucTa = "ُ" + cTa;
|
||||||
eacTi = "أَ" + cTi;
|
eacTi = "أَ" + cTi;
|
||||||
eacTu = "أَ" + cTu;
|
eacTu = "أَ" + cTu;
|
||||||
mucTaY = "م" + ucTa +"ى"
|
mucTaY = "م" + ucTa +"ى"
|
||||||
} in verbDef eacTa eacTay eucTi eucTu eucTiy ucTi ucTu ucTa eacTi eacTu mucTaY i;
|
} in verbDef (toDefForms eacTa eacTay eucTi eucTu eucTiy ucTi ucTu ucTa eacTi eacTu mucTaY) i;
|
||||||
|
|
||||||
v5sound : Root3 -> Verb =
|
v5sound : Root3 -> Verb =
|
||||||
\nfs ->
|
\nfs ->
|
||||||
@@ -599,15 +647,15 @@ v8sound : Root3 -> Verb =
|
|||||||
patV1Perf : Vowel => Pattern =
|
patV1Perf : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
a => facal ; --katab
|
a => facal ; --katab
|
||||||
u => facul ; --Hasun
|
u => facul ; --Hasun
|
||||||
i => facil --rabiH
|
i => facil --rabiH
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
patV1Impf : Vowel => Pattern =
|
patV1Impf : Vowel => Pattern =
|
||||||
table {
|
table {
|
||||||
u => fcul ; --ktub
|
u => fcul ; --ktub
|
||||||
a => fcal ; --rbaH
|
a => fcal ; --rbaH
|
||||||
i => fcil --Hsin
|
i => fcil --Hsin
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
endVowel : Mood => Str =
|
endVowel : Mood => Str =
|
||||||
|
|||||||
Reference in New Issue
Block a user