concrete QuestionTam of Question = CatTam ** open Prelude, ResTam, ParadigmsTam, (VS=VerbTam), (NM=NounTam), (SS=StructuralTam) in { -- A question can be formed from a clause ('yes-no question') or -- with an interrogative. -- Interrogative pronouns can be formed with interrogative -- determiners, with or without a noun. --lin -- -- : IDet -> CN -> IP ; -- which five songs -- IdetCN idet cn = NM.DetCN idet cn ** { -- sp = \\nf => idet.sp ! nf ++ cn.s ! nf -- } ; -- -- : IDet -> IP ; -- which five -- IdetIP idet = NM.DetNP idet ** {sp = idet.sp}; -- -- : IQuant -> Num -> IDet ; -- which (five) -- IdetQuant iquant num = iquant ** { -- pr = num.s ++ case iquant.isPre of {True => iquant.s ; False => [] } ; -- -- if isPre is True, then: "berapa kucing" -- s = case iquant.isPre of { False => iquant.s ; True => [] }; -- -- if isPre is False, use s: "kucing berapa" -- n = num.n ; -- count = "" ; -- } ; -- -- : IP -> ClSlash -> QCl ; -- whom does John love -- QuestSlash ip cls = cls ** { -- pred = \\vf,pol => cls.pred ! vf ! pol ++ ip.s ! Bare -- } ; -- -- : Subj -> Pred -> QCl ; -- -- QuestCl cl = cl ** { -- -- pred = \\vf,pol => cl.pred ! vf ! pol -- -- }; -- QuestCl cl = cl ** { -- subj = "adakah" ++ cl.subj; -- } ; -- -- missing record fields: pred type of vp -- -- : IP -> VP -> QCl ; -- -- expected: ParamTam.VForm => ParamX.Polarity => Str -- -- inferred: {s : ParamTam.VForm => ParamX.Polarity => Str} -- QuestVP ip cl = cl ** { -- pred = \\vf,pol => cl.s ! vf ! pol; -- subj = ip.s ! Bare ; -- }; -- -- : IAdv -> Cl -> QCl ; -- why does John walk -- QuestIAdv iadv cls = { -- subj = case iadv.isPre of { -- True => iadv.s ++ cls.subj ; False => cls.subj -- } ; -- pred = \\vf,pol => case iadv.isPre of { -- True => cls.pred ! iadv.vf ! pol ; -- False => cls.pred ! iadv.vf ! pol ++ iadv.s -- } ; -- } ; -- -- : IP -> IComp ; -- CompIP ip = {s = ip.s ! Bare } ; -- who (is it) -- -- : IComp -> NP -> QCl ; -- where is John? -- QuestIComp icomp np = { -- pred = \\vf,pol => np.s ! Bare ; -- subj = icomp.s ; -- } ; -- \\vf,pol,posadv => -- -- { -- -- pred = \\vf,pol => ip.s ++ vp.s ! vf ! pol; -- -- } ; --{- ---- -- s = \\t,a,p => -- let -- cl = oldClause slash ; -- cls : Direct -> Str = -- \d -> cl.s ! d ! t ! a ! p ! Indic ; ---- \d -> cl.s ! ip.a ! d ! t ! a ! p ! Indic ; -- who = slash.c2.s ++ ip.s ! slash.c2.c -- in table { -- QDir => who ++ cls DInv ; -- QIndir => who ++ cls DDir -- } ---} --{- -- lin -- -- : IComp -> NP -> QCl ; -- where is John? -- QuestIComp icomp np = -- Interrogative pronouns can be formed with interrogative -- determiners, with or without a noun. -- -- : IDet -> CN -> IP ; -- which five songs -- IdetCN idet cn = {contractSTM = False} ** NS.DetCN idet cn ; -- -- : IDet -> IP ; -- which five -- IdetIP idet = {contractSTM = False} ** NS.DetNP idet ; -- They can be modified with adverbs. -- -- : IP -> Adv -> IP ; -- who in Paris -- --AdvIP = NS.AdvNP ; -- Interrogative quantifiers have number forms and can take number modifiers. -- -- : IQuant -> Num -> IDet ; -- which (five) -- IdetQuant = NS.DetQuant ; -- Interrogative adverbs can be formed prepositionally. -- -- : Prep -> IP -> IAdv ; -- with whom -- PrepIP prep ip = SS.prepIP prep (ip.s ! Abs) False ; -- They can be modified with other adverbs. -- -- : IAdv -> Adv -> IAdv ; -- where in Paris -- -- AdvIAdv iadv adv = -- Interrogative complements to copulas can be both adverbs and -- pronouns. -- -- : IAdv -> IComp ; -- CompIAdv iadv = iadv ; -- where (is it) -- More $IP$, $IDet$, and $IAdv$ are defined in $Structural$. -- Wh questions with two or more question words require a new, special category. -- cat -- QVP ; -- buy what where -- fun -- ComplSlashIP : VPSlash -> IP -> QVP ; -- buys what -- AdvQVP : VP -> IAdv -> QVP ; -- lives where -- AddAdvQVP : QVP -> IAdv -> QVP ; -- buys what where -- QuestQVP : IP -> QVP -> QCl ; -- who buys what where ---} --} }