--# -path=.:prelude concrete ConversationIta of Conversation = open Prelude in { lincat Q = {s : Str} ; NP = {s : Str ; g : Gen ; n : Num ; p : Pol} ; A = {s : Gen => Num => Str} ; Gender = {s : Str ; g : Gen} ; Number = {s : Str ; n : Num} ; Politeness = {s : Str ; p : Pol} ; param Num = Sg | Pl ; Gen = Masc | Fem ; Pol = Fam | Resp ; lin PredA np a = ss (np.s ++ essere np.n np.p ++ a.s ! np.g ! np.n) ; GMasc = ss [] ** {g = Masc} ; GFem = ss [] ** {g = Fem} ; NSg = ss [] ** {n = Sg} ; NPl = ss [] ** {n = Pl} ; PFamiliar = ss [] ** {p = Fam} ; PPolite = ss [] ** {p = Resp} ; You n p g = {g = g.g ; n = n.n ; p = p.p ; s = case of { => "tu" ; => "Lei" ; => "voi" ; => "Loro" } ++ g.s ++ p.s ++ n.s } ; Ready = regA "pronto" ; oper essere : Num -> Pol -> Str = \n,p -> case of { => "sei" ; => "รจ" ; => "siete" ; => "sono" } ; regA : Str -> {s : Gen => Num => Str} = \nero -> let ner = init nero in { s = \\g,n => case of { => ner + "a" ; => nero ; => ner + "e" ; => ner + "i" } } ; }