diff --git a/next-lib/src/bulgarian/IdiomBul.gf b/next-lib/src/bulgarian/IdiomBul.gf index cd22f7908..09c989fe1 100644 --- a/next-lib/src/bulgarian/IdiomBul.gf +++ b/next-lib/src/bulgarian/IdiomBul.gf @@ -33,13 +33,14 @@ concrete IdiomBul of Idiom = CatBul ** open Prelude, ParadigmsBul, ResBul in { v : {aux1:Str; aux2:Str; main:Str} = case of { - => {aux1=[]; aux2=[]; main=present} ; - => {aux1=[]; aux2=auxPres; main=perfect} ; - => {aux1=[]; aux2=[]; main=aorist} ; - => {aux1=[]; aux2=auxAorist; main=perfect} ; - => {aux1="ùå"; aux2=[]; main=present} ; - => {aux1="ùå"++auxPres; aux2=[]; main=perfect} ; - => {aux1=auxCondS; aux2=[]; main=perfect} + => {aux1=[]; aux2=[]; main=present} + ; --# notpresent + => {aux1=[]; aux2=auxPres; main=perfect} ; --# notpresent + => {aux1=[]; aux2=[]; main=aorist} ; --# notpresent + => {aux1=[]; aux2=auxAorist; main=perfect} ; --# notpresent + => {aux1="ùå"; aux2=[]; main=present} ; --# notpresent + => {aux1="ùå"++auxPres; aux2=[]; main=perfect} ; --# notpresent + => {aux1=auxCondS; aux2=[]; main=perfect} --# notpresent } ; in case o of { diff --git a/next-lib/src/bulgarian/ResBul.gf b/next-lib/src/bulgarian/ResBul.gf index c26a92824..527dceef4 100644 --- a/next-lib/src/bulgarian/ResBul.gf +++ b/next-lib/src/bulgarian/ResBul.gf @@ -454,13 +454,14 @@ resource ResBul = ParamX ** open Prelude in { verbs : {aux:{s1:Str; s2:Str}; main:Str} = case of { - => {aux=vf2 clitic.s; main=presentImperf} ; - => {aux=vf1 clitic.s; main=perfect} ; - => {aux=vf2 clitic.s; main=aorist} ; - => {aux=vf4 auxAorist; main=perfect} ; - => {aux=vf3 clitic.s; main=present} ; - => {aux=vf3 (apc []); main=perfect} ; - => {aux=vf4 auxCond ; main=perfect} + => {aux=vf2 clitic.s; main=presentImperf} + ; --# notpresent + => {aux=vf1 clitic.s; main=perfect} ; --# notpresent + => {aux=vf2 clitic.s; main=aorist} ; --# notpresent + => {aux=vf4 auxAorist; main=perfect} ; --# notpresent + => {aux=vf3 clitic.s; main=present} ; --# notpresent + => {aux=vf3 (apc []); main=perfect} ; --# notpresent + => {aux=vf4 auxCond ; main=perfect} --# notpresent } in verb.ad.s ++ li0 ++ verbs.aux.s1 ++ verbs.main ++ verbs.aux.s2 ; diff --git a/next-lib/src/catalan/BeschCat.gf b/next-lib/src/catalan/BeschCat.gf index cd7fe650c..43f8c7061 100644 --- a/next-lib/src/catalan/BeschCat.gf +++ b/next-lib/src/catalan/BeschCat.gf @@ -2026,6 +2026,9 @@ let x_ = Predef.tk 5 deure in VP (Pass Sg Fem) => x_ + "guda" ; VP (Pass Pl Masc) => x_ + "guts" ; VP (Pass Sg Masc) => x_ + "gut" ; + + +{- -- AR removed these duplicates VI Infn => x_ + "ure" ; VI Ger => x_ + "vent" ; VI Part => x_ + "gut" ; @@ -2075,6 +2078,7 @@ let x_ = Predef.tk 5 deure in VP (Pass Sg Fem) => x_ + "guda" ; VP (Pass Pl Masc) => x_ + "guts" ; VP (Pass Sg Masc) => x_ + "gut" ; +-} VP (Imp Sg P1) => variants {} } } ; @@ -4912,14 +4916,14 @@ let s_ = Predef.tk 4 seure in VP (Pres Ind Sg P3) => s_ + "eu" ; VP (Pres Sub Pl P1) => s_ + "eguem" ; VP (Pres Sub Sg P1) => s_ + "ega" ; - VP (Pres Sub Sg P1) => s_ + "egui" ; +-- VP (Pres Sub Sg P1) => s_ + "egui" ; VP (Pres Sub Pl P2) => s_ + "egueu" ; VP (Pres Sub Sg P2) => s_ + "egues" ; - VP (Pres Sub Sg P2) => s_ + "eguis" ; +-- VP (Pres Sub Sg P2) => s_ + "eguis" ; VP (Pres Sub Pl P3) => s_ + "eguen" ; - VP (Pres Sub Pl P3) => s_ + "eguin" ; +-- VP (Pres Sub Pl P3) => s_ + "eguin" ; VP (Pres Sub Sg P3) => s_ + "ega" ; - VP (Pres Sub Sg P3) => s_ + "egui" ; +-- VP (Pres Sub Sg P3) => s_ + "egui" ; -- AR: why duplicated forms? VP (Impf Ind Sg P1) => s_ + "eia" ;--# notpresent VP (Impf Ind Sg P2) => s_ + "eies" ;--# notpresent VP (Impf Ind Pl P3) => s_ + "eien" ;--# notpresent @@ -4958,9 +4962,9 @@ let s_ = Predef.tk 4 seure in VP (Imp Pl P2) => s_ + "eieu" ; VP (Imp Sg P2) => s_ + "eu" ; VP (Imp Pl P3) => s_ + "eguen" ; - VP (Imp Pl P3) => s_ + "eguin" ; +-- VP (Imp Pl P3) => s_ + "eguin" ; VP (Imp Sg P3) => s_ + "ega" ; - VP (Imp Sg P3) => s_ + "egui" ; +-- VP (Imp Sg P3) => s_ + "egui" ; VP (Pass Pl Fem) => s_ + "egudes" ; VP (Pass Sg Fem) => s_ + "eguda" ; VP (Pass Pl Masc) => s_ + "eguts" ; @@ -5345,7 +5349,7 @@ let t_ = Predef.tk 5 t {s = table { VI Ger => t_ + "orcent" ; VI Part => t_ + "ort" ; - VI Part => t_ + "orçut" ; +-- VI Part => t_ + "orçut" ; -- AR why duplicate? VP (Pres Ind Pl P1) => t_ + "orcem" ; VP (Pres Ind Sg P1) => t_ + "orcem" ; VP (Pres Ind Pl P2) => t_ + "orceu" ; @@ -5398,17 +5402,17 @@ let t_ = Predef.tk 5 t VP (Imp Pl P2) => t_ + "orceu" ; VP (Imp Sg P2) => t_ + "orç" ; VP (Imp Pl P3) => t_ + "orcen" ; - VP (Imp Pl P3) => t_ + "orcin" ; +-- VP (Imp Pl P3) => t_ + "orcin" ; VP (Imp Sg P3) => t_ + "orci" ; - VP (Imp Sg P3) => t_ + "orça" ; +-- VP (Imp Sg P3) => t_ + "orça" ; VP (Pass Pl Fem) => t_ + "ortes" ; - VP (Pass Pl Fem) => t_ + "orçudes" ; +-- VP (Pass Pl Fem) => t_ + "orçudes" ; VP (Pass Sg Fem) => t_ + "orta" ; - VP (Pass Sg Fem) => t_ + "orçuda" ; +-- VP (Pass Sg Fem) => t_ + "orçuda" ; VP (Pass Pl Masc) => t_ + "orts" ; - VP (Pass Pl Masc) => t_ + "orçuts" ; +-- VP (Pass Pl Masc) => t_ + "orçuts" ; VP (Pass Sg Masc) => t_ + "ort" ; - VP (Pass Sg Masc) => t_ + "orçut" ; +-- VP (Pass Sg Masc) => t_ + "orçut" ; VI Infn => t_ + "òrcer" ; VP (Imp Sg P1) => variants {} } @@ -5960,6 +5964,7 @@ let x_ = Predef.tk 5 voler in VP (Pass Sg Fem) => x_ + "olguda" ; VP (Pass Pl Masc) => x_ + "olguts" ; VP (Pass Sg Masc) => x_ + "olgut" ; +{- AR commented out duplicates 22/6/2009 VI Infn => x_ + "oler" ; VI Ger => x_ + "olent" ; VI Part => x_ + "olgut" ; @@ -6014,6 +6019,7 @@ let x_ = Predef.tk 5 voler in VP (Pass Sg Fem) => x_ + "olguda" ; VP (Pass Pl Masc) => x_ + "olguts" ; VP (Pass Sg Masc) => x_ + "olgut" ; +-} VP (Imp Sg P1) => variants {} } } ; diff --git a/next-lib/src/catalan/LexiconCat.gf b/next-lib/src/catalan/LexiconCat.gf index 54902786d..053b80d43 100644 --- a/next-lib/src/catalan/LexiconCat.gf +++ b/next-lib/src/catalan/LexiconCat.gf @@ -360,6 +360,6 @@ lin ready_A = regA "preparat" ; reason_N = regFN "raó" ; uncertain_A = regA "incert" ; - have_V2 = dirV2 (verbV (tenir_108 "tenir")) ; + } ; diff --git a/next-lib/src/catalan/StructuralCat.gf b/next-lib/src/catalan/StructuralCat.gf index f32d69b27..f1b1f2f5a 100644 --- a/next-lib/src/catalan/StructuralCat.gf +++ b/next-lib/src/catalan/StructuralCat.gf @@ -161,7 +161,7 @@ lin "vosté" "li" "li" "vosté" ["el seu"] ["la seva"] ["els seus"] ["les seves"] Fem Pl P2 ; - + have_V2 = dirV2 (verbV (tenir_108 "tenir")) ; oper etConj : {s : Str ; n : MorphoCat.Number} = {s = "i" } ** {n = Pl} ; diff --git a/next-lib/src/finnish/ResFin.gf b/next-lib/src/finnish/ResFin.gf index e81238000..17384ec71 100644 --- a/next-lib/src/finnish/ResFin.gf +++ b/next-lib/src/finnish/ResFin.gf @@ -273,7 +273,7 @@ oper case p of { Neg => "kö" ; -- eikö tule _ => case a of { - Anter => "ko" ; -- onko mennyt + Anter => "ko" ; -- onko mennyt --# notpresent _ => vp.qp -- tuleeko, meneekö } } ; diff --git a/next-lib/src/finnish/StructuralFin.gf b/next-lib/src/finnish/StructuralFin.gf index 58b7fc2e9..7a08acd81 100644 --- a/next-lib/src/finnish/StructuralFin.gf +++ b/next-lib/src/finnish/StructuralFin.gf @@ -276,10 +276,6 @@ oper lin not_Predet = {s = \\_,_ => "vain"} ; - nothing_but_Predet = - {s = \\n,c => "ei" ++ mikaanPron ! n ! npform2case n c ++ "paitsi"} ; - nobody_but_Predet = - {s = \\n,c => "ei" ++ kukaanPron ! n ! npform2case n c ++ "paitsi"} ; no_Quant = heavyQuant { s1 = \\n,c => "ei" ++ mikaanPron ! n ! c ; diff --git a/next-lib/src/german/CatGer.gf b/next-lib/src/german/CatGer.gf index 737b1d0c1..e1dae718b 100644 --- a/next-lib/src/german/CatGer.gf +++ b/next-lib/src/german/CatGer.gf @@ -56,7 +56,6 @@ concrete CatGer of Cat = sp : Number => Gender => Case => Str ; a : Adjf } ; - Art = {s : Bool => Number => Gender => Case => Str ; a : Adjf} ; Predet = {s : Number => Gender => Case => Str ; c : PredetCase} ; Num = {s : Gender => Case => Str ; n : Number ; isNum : Bool} ; Card = {s : Gender => Case => Str ; n : Number} ; diff --git a/next-lib/src/german/ResGer.gf b/next-lib/src/german/ResGer.gf index 10c72082c..5677ab106 100644 --- a/next-lib/src/german/ResGer.gf +++ b/next-lib/src/german/ResGer.gf @@ -143,11 +143,10 @@ resource ResGer = ParamX ** open Prelude in { vFin : Bool -> Mood -> Tense -> Agr -> VForm = \b,m,t,a -> case of { - => VFin b (VPresInd a.n a.p) ; - => VFin b (VPresSubj a.n a.p) ; => VFin b (VImpfInd a.n a.p) ; --# notpresent - => VFin b (VImpfSubj a.n a.p) ; --# notpresent - _ => VInf False --- never used + => VFin b (VImpfSubj a.n a.p) ; --# notpresent + => VFin b (VPresInd a.n a.p) ; + => VFin b (VPresSubj a.n a.p) } ; conjAgr : Agr -> Agr -> Agr = \a,b -> { diff --git a/next-lib/src/hindi/SymbolHin.gf b/next-lib/src/hindi/SymbolHin.gf new file mode 100644 index 000000000..f972c60a3 --- /dev/null +++ b/next-lib/src/hindi/SymbolHin.gf @@ -0,0 +1,41 @@ +--# -path=.:abstract:common + +concrete SymbolHin of Symbol = CatHin ** open Prelude, ResHin in { + +{- TODO! +lin + SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ; + IntPN i = {s = addGenitiveS i.s ; g = Neutr} ; + FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ; + NumPN i = {s = i.s ; g = Neutr} ; + CNIntNP cn i = { + s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ; + a = agrgP3 Sg cn.g + } ; + CNSymbNP det cn xs = { + s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ; + a = agrgP3 det.n cn.g + } ; + CNNumNP cn i = { + s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ; + a = agrgP3 Sg cn.g + } ; + + SymbS sy = sy ; + + SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ; + SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ; +-} + +lincat + + Symb, [Symb] = SS ; + +lin + MkSymb s = s ; + +-- BaseSymb = infixSS "and" ; + ConsSymb = infixSS "," ; + + +} diff --git a/next-lib/src/interlingua/ResIna.gf b/next-lib/src/interlingua/ResIna.gf index 9eb64bce4..e464db6b4 100644 --- a/next-lib/src/interlingua/ResIna.gf +++ b/next-lib/src/interlingua/ResIna.gf @@ -115,9 +115,9 @@ resource ResIna = ParamX ** open Prelude in { s = table { VInf => crear; VPres => crea; - VPast => crea + "va"; - VFut => crear + "a"; - VCond => crear + "ea"; + VPast => crea + "va"; --# notpresent + VFut => crear + "a"; --# notpresent + VCond => crear + "ea"; --# notpresent VPPart => case crear of { rid + "er" => rid + "ite"; _ => crea + "te" @@ -134,9 +134,9 @@ resource ResIna = ParamX ** open Prelude in { s = case use_irreg of { True => table { VPres => "es"; - VFut => "sera"; - VCond => "serea"; - VPast => "era"; + VFut => "sera"; --# notpresent + VCond => "serea"; --# notpresent + VPast => "era"; --# notpresent form => reg.s!form }; False => reg.s @@ -233,8 +233,9 @@ resource ResIna = ParamX ** open Prelude in { clitics = \\_ => []; rest = \\_ => []; s = table - {Simul => \\t,use_irreg => {fin = (verb!use_irreg).s ! (tenseToVFrom!t); inf = []}; - Anter => \\t,use_irreg => {fin = (haberV!use_irreg).s ! (tenseToVFrom!t); inf = (verb!use_irreg).s!VPPart} + {Simul => \\t,use_irreg => {fin = (verb!use_irreg).s ! (tenseToVFrom!t); inf = []} + ; --# notpresent + Anter => \\t,use_irreg => {fin = (haberV!use_irreg).s ! (tenseToVFrom!t); inf = (verb!use_irreg).s!VPPart} --# notpresent }; prp = (verb!False).s ! VPresPart; inf = (verb!False).s ! VInf; diff --git a/next-lib/src/interlingua/SymbolIna.gf b/next-lib/src/interlingua/SymbolIna.gf new file mode 100644 index 000000000..1ea8b5841 --- /dev/null +++ b/next-lib/src/interlingua/SymbolIna.gf @@ -0,0 +1,41 @@ +--# -path=.:abstract:common + +concrete SymbolIna of Symbol = CatIna ** open Prelude, ResIna in { + +{- TODO! +lin + SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ; + IntPN i = {s = addGenitiveS i.s ; g = Neutr} ; + FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ; + NumPN i = {s = i.s ; g = Neutr} ; + CNIntNP cn i = { + s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ; + a = agrgP3 Sg cn.g + } ; + CNSymbNP det cn xs = { + s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ; + a = agrgP3 det.n cn.g + } ; + CNNumNP cn i = { + s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ; + a = agrgP3 Sg cn.g + } ; + + SymbS sy = sy ; + + SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ; + SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ; +-} + +lincat + + Symb, [Symb] = SS ; + +lin + MkSymb s = s ; + +-- BaseSymb = infixSS "and" ; + ConsSymb = infixSS "," ; + + +} diff --git a/next-lib/src/italian/StructuralIta.gf b/next-lib/src/italian/StructuralIta.gf index 313dad334..1e46b9bbd 100644 --- a/next-lib/src/italian/StructuralIta.gf +++ b/next-lib/src/italian/StructuralIta.gf @@ -153,9 +153,6 @@ lin "Lei" "La" "Le" "Glie" "Lei" "Suo" "Sua" "Suoi" "Sue" Masc Sg P3 ; not_Predet = {s = \\a,c => prepCase c ++ "non" ; c = Nom} ; - nothing_but_Predet = {s = \\a,c => prepCase c ++ "niente eccetto" ; c = Nom} ; - nobody_but_Predet = {s = \\a,c => prepCase c ++ "nessun eccetto" ; c = Nom} ; - no_Quant = let aucun : ParadigmsIta.Number => ParadigmsIta.Gender => Case => Str = table { diff --git a/next-lib/src/russian/SentenceRus.gf b/next-lib/src/russian/SentenceRus.gf index 0c15b3d5d..79d691ccd 100644 --- a/next-lib/src/russian/SentenceRus.gf +++ b/next-lib/src/russian/SentenceRus.gf @@ -97,24 +97,32 @@ concrete SentenceRus of Sentence = CatRus ** open Prelude, ResRus in { UseCl t p cl = {s = case t.t of { Cond => cl.s! p.p ! ClCondit ; --# notpresent - Pres => cl.s! p.p ! ClIndic Present t.a ; ---- AR work-around 13/12/2007 - _ => cl.s! p.p ! ClIndic (getTense t.t) t.a}}; + Pres => cl.s! p.p ! ClIndic Present t.a ---- AR work-around 13/12/2007 + ; --# notpresent + _ => cl.s! p.p ! ClIndic (getTense t.t) t.a --# notpresent + } + }; UseQCl t p qcl= {s = case t.t of { Cond => qcl.s! p.p ! ClCondit ; --# notpresent - Pres => qcl.s! p.p ! ClIndic Present t.a ; - _ => qcl.s!p.p! ClIndic (getTense t.t) t.a }}; + Pres => qcl.s! p.p ! ClIndic Present t.a + ; --# notpresent + _ => qcl.s!p.p! ClIndic (getTense t.t) t.a --# notpresent + }}; UseRCl t p rcl ={s = \\gn,c,anim => case t.t of { Cond => [", "] ++ rcl.s! p.p ! ClCondit ! gn !c !anim ; --# notpresent - Pres => [", "] ++ rcl.s! p.p ! ClIndic Present t.a !gn !c !anim; - _ => [", "] ++ rcl.s! p.p ! ClIndic (getTense t.t) t.a !gn !c !anim}}; + Pres => [", "] ++ rcl.s! p.p ! ClIndic Present t.a !gn !c !anim + ; --# notpresent + _ => [", "] ++ rcl.s! p.p ! ClIndic (getTense t.t) t.a !gn !c !anim --# notpresent + }}; UseSlash t p cl = { s = case t.t of { Cond => cl.s! p.p ! ClCondit ; --# notpresent - Pres => cl.s! p.p ! ClIndic Present t.a ; - _ => cl.s! p.p ! ClIndic (getTense t.t) t.a + Pres => cl.s! p.p ! ClIndic Present t.a + ; --# notpresent + _ => cl.s! p.p ! ClIndic (getTense t.t) t.a --# notpresent } ; s2 = cl.s2 ; c = cl.c diff --git a/next-lib/src/russian/SymbolRus.gf b/next-lib/src/russian/SymbolRus.gf new file mode 100644 index 000000000..54355374a --- /dev/null +++ b/next-lib/src/russian/SymbolRus.gf @@ -0,0 +1,41 @@ +--# -path=.:abstract:common + +concrete SymbolRus of Symbol = CatRus ** open Prelude, ResRus in { + +{- TODO! +lin + SymbPN i = {s = addGenitiveS i.s ; g = Neutr} ; + IntPN i = {s = addGenitiveS i.s ; g = Neutr} ; + FloatPN i = {s = addGenitiveS i.s ; g = Neutr} ; + NumPN i = {s = i.s ; g = Neutr} ; + CNIntNP cn i = { + s = \\c => cn.s ! Sg ! Nom ++ (addGenitiveS i.s) ! c ; + a = agrgP3 Sg cn.g + } ; + CNSymbNP det cn xs = { + s = \\c => det.s ++ cn.s ! det.n ! Nom ++ (addGenitiveS xs.s) ! c ; + a = agrgP3 det.n cn.g + } ; + CNNumNP cn i = { + s = \\c => cn.s ! Sg ! Nom ++ i.s ! c ; + a = agrgP3 Sg cn.g + } ; + + SymbS sy = sy ; + + SymbNum sy = { s = addGenitiveS sy.s ; n = Pl ; hasCard = True } ; + SymbOrd sy = { s = \\c => sy.s ++ (regGenitiveS "th")!c} ; +-} + +lincat + + Symb, [Symb] = SS ; + +lin + MkSymb s = s ; + +-- BaseSymb = infixSS "and" ; + ConsSymb = infixSS "," ; + + +} diff --git a/next-lib/src/scandinavian/CommonScand.gf b/next-lib/src/scandinavian/CommonScand.gf index 9aa52f74c..d56d7ee1d 100644 --- a/next-lib/src/scandinavian/CommonScand.gf +++ b/next-lib/src/scandinavian/CommonScand.gf @@ -101,9 +101,9 @@ oper -- Used in $DiffScand.predV$. vFin : Tense -> Voice -> VForm = \t,v -> case t of { - Pres => VF (VPres v) ; - Past => VF (VPret v) ; --# notpresent - _ => VI (VInfin v) --- not to be used? + Pres => VF (VPres v) + ; --# notpresent + Past => VF (VPret v) --# notpresent } ; -- Used in $ConjunctionScand$. diff --git a/next-lib/src/scandinavian/NounScand.gf b/next-lib/src/scandinavian/NounScand.gf index bbb1f3a0c..4cd697eae 100644 --- a/next-lib/src/scandinavian/NounScand.gf +++ b/next-lib/src/scandinavian/NounScand.gf @@ -58,8 +58,8 @@ incomplete concrete NounScand of Noun = let md : Bool -> Bool = \b -> case quant.det of { DDef _ => orB b num.isDet ; - DIndef => num.isDet ; - _ => False + DIndef => num.isDet + -- _ => False } in { s = \\b,g => quant.s ! num.n ! b ! md b ! g ++ diff --git a/src/GF/Compile/CheckGrammar.hs b/src/GF/Compile/CheckGrammar.hs index 43abffa02..3c48de3cf 100644 --- a/src/GF/Compile/CheckGrammar.hs +++ b/src/GF/Compile/CheckGrammar.hs @@ -787,10 +787,12 @@ checkLType env trm typ0 = do ps <- checkErr $ testOvershadow ps0 vs if null ps then return () + else raise $ "patterns never reached:" +++ + concat (intersperse ", " (map prt ps)) ---- else checkWarn $ "patterns never reached:" +++ ---- concat (intersperse ", " (map prt ps)) - else trace ("WARNING: patterns never reached:" +++ - concat (intersperse ", " (map prt ps))) (return ()) +---- else trace ("WARNING: patterns never reached:" +++ +---- concat (intersperse ", " (map prt ps))) (return ()) ---- AR 6/4/2009: checkWarn doesn't show because of laziness (?) _ -> return () -- happens with variable types