{-# LANGUAGE NoMonomorphismRestriction #-} {-# LANGUAGE TypeFamilies, FlexibleInstances #-} -- | Interpreting a CFG derivation with quantifiers -- as a string in Japanese. -- That is, we generate a yield of a CFG derivation, -- this time in Japanese. -- module Lambda.QCFGJ where import Lambda.QCFG -- we shall re-use our earlier work import Lambda.CFGJ import Lambda.CFG -- | We extend our JA interpreter (interpreter of -- derivations as Japanese phrases) to deal -- with QNP. -- type instance TJ CN = String -- | Quantifiers get the high type -- In fact, the same type as TJ NP -- type instance TJ QNP = Case -> SK -- | The expression for quantifiers ensures that no -- inverse reading is possible. Only linear reading. instance Quantifier JA where farmer = JA "農家" donkey = JA "ロバ" -- every (JA n) = JA (\cas k -> k ("どの" ++ n ++ "も")) every (JA n) = JA (\cas k -> k (n ++ case_particle cas ++ "みな")) a (JA n) = JA (\cas k -> k ("ある" ++ n ++ case_particle cas)) who (JA vp) (JA n) = JA (vp (\cas k -> k "") ++ n) everyone = JA (\cas k -> "みんな" ++ case_particle cas ++ k "") someone = JA (\cas k -> "ある人" ++ case_particle cas ++ k "") r5 (JA f) (JA x) = JA (f x) -- the same as r2 r4 (JA x) (JA f) = JA (f x) -- the same as r1 -- | We can now see the English sentences that -- correspond to the derivations sen2-sen5 in -- QCFG.hs sen2_ja = sen2 :: JA S sen3_ja = sen3 :: JA S sen4_ja = sen4 :: JA S sen5_ja = sen5 :: JA S