diff --git a/src/english/MakeStructuralEng.gf b/src/english/MakeStructuralEng.gf index 71edc2fb6..c89a55d71 100644 --- a/src/english/MakeStructuralEng.gf +++ b/src/english/MakeStructuralEng.gf @@ -11,7 +11,15 @@ oper lin IDet {s = s ; n = n} ; mkIQuant : Str -> Str -> IQuant = \s,n -> lin IQuant {s = table {Sg => s ; Pl => n}} ; - mkDet : Str -> Number -> Det = \s,n -> - lin Det (mkDeterminer n s) ; + + mkDet = overload { + mkDet : Str -> Number -> Det = \s,n -> + lin Det (mkDeterminer n s) ; + mkDet : Str -> Det -> Det = \s,d -> + d ** { + s = s ++ d.s ; + sp = \\g,b,c => s ++ d.sp ! g ! b ! c ; + } ; + } ; } diff --git a/src/finnish/MakeStructuralFin.gf b/src/finnish/MakeStructuralFin.gf index 8261c51e6..08b3694b1 100644 --- a/src/finnish/MakeStructuralFin.gf +++ b/src/finnish/MakeStructuralFin.gf @@ -13,8 +13,17 @@ oper mkIDet : Bool -> Str -> N -> Number -> IDet = \isNum,pref,s,n -> lin IDet {s = \\c => pref ++ s.s ! NCase n c ; n = n ; isNum = isNum} ; - mkDet : N -> Number -> Det = \s,n -> - lin Det (MorphoFin.mkDet n s) ; + mkDet = overload { + mkDet : N -> Number -> Det = \s,n -> + lin Det (MorphoFin.mkDet n s) ; + mkDet : Str -> Bool -> Det -> Det = \s,isNeg,d -> + d ** { + s1 = \\c => s ++ d.s1 ! c ; + sp = \\c => s ++ d.sp ! c ; + isNeg = isNeg ; + } ; + } ; + partDet : N -> Number -> Det = \s,n -> lin Det (MorphoFin.partDet False n s) ;