module Drasil.NaturalLanguage.English.NounPhrase.Combinators (
insertString, prependString, insertStringOp, insertStringGen,
the, theGen,
a_, a_Gen,
and_, and_PS, and_Gen, andThe,
ofThe, ofThePS, ofTheGen, inThe, inThePS, inTheGen,
the_ofThe, the_ofThePS, the_ofTheGen,
for, forPS, forGen,
of_, of_PS, of_Gen,
with, parensNP,
npS, npP, (.+.)
) where
import Drasil.NaturalLanguage.English.NounPhrase
( NPG,
CapitalizationRuleG(CapWords, CapFirst, CapNothing),
NounPhrase(phraseNP, pluralNP),
nounPhrase'', surroundNPStruct,
npS, npP, (.+.), NPStructG)
insertString :: String -> NPG a -> NPG a -> NPG a
insertString :: forall a. String -> NPG a -> NPG a -> NPG a
insertString String
str NPG a
t1 NPG a
t2 = NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
forall a.
NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
nounPhrase'' (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t1 NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t2) (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t1 NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
pluralNP NPG a
t2) CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapFirst CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapWords
insertStringOp :: String -> NPG a -> NPG a -> NPG a
insertStringOp :: forall a. String -> NPG a -> NPG a -> NPG a
insertStringOp String
str NPG a
t1 NPG a
t2 = NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
forall a.
NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
nounPhrase'' (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t1 NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t2) (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
pluralNP NPG a
t1 NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t2) CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapFirst CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapWords
insertStringGen :: String -> (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
insertStringGen :: forall a.
String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
insertStringGen String
str NPG a -> NPStructG a
f1 NPG a -> NPStructG a
f2 NPG a
t1 NPG a
t2 = NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
forall a.
NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
nounPhrase'' (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t1 NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t2) (NPG a -> NPStructG a
f1 NPG a
t1 NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
f2 NPG a
t2) CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapFirst CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapWords
prependString :: String -> NPG a -> NPG a
prependString :: forall a. String -> NPG a -> NPG a
prependString String
str NPG a
t1 = NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
forall a.
NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
nounPhrase'' (String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t1) (String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
pluralNP NPG a
t1) CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapFirst CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapWords
prependStringGen :: String -> (NPG a -> NPStructG a) -> NPG a -> NPG a
prependStringGen :: forall a. String -> (NPG a -> NPStructG a) -> NPG a -> NPG a
prependStringGen String
str NPG a -> NPStructG a
f NPG a
t = NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
forall a.
NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
nounPhrase'' (String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t) (String -> NPStructG a
forall a. String -> NPStructG a
npS String
str NPStructG a -> NPStructG a -> NPStructG a
forall a. NPStructG a -> NPStructG a -> NPStructG a
.+. NPG a -> NPStructG a
f NPG a
t) CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapFirst CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapWords
surround :: String -> String -> NPG a -> NPG a
surround :: forall a. String -> String -> NPG a -> NPG a
surround String
l String
r NPG a
t = NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
forall a.
NPStructG a
-> NPStructG a
-> CapitalizationRuleG a
-> CapitalizationRuleG a
-> NPG a
nounPhrase'' (String -> String -> NPStructG a -> NPStructG a
forall a. String -> String -> NPStructG a -> NPStructG a
surroundNPStruct String
l String
r (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
phraseNP NPG a
t)) (String -> String -> NPStructG a -> NPStructG a
forall a. String -> String -> NPStructG a -> NPStructG a
surroundNPStruct String
l String
r (NPG a -> NPStructG a
forall n a. NounPhrase n a => n -> NPStructG a
pluralNP NPG a
t)) CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapNothing CapitalizationRuleG a
forall a. CapitalizationRuleG a
CapNothing
the :: NPG a -> NPG a
the :: forall a. NPG a -> NPG a
the = String -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a
prependString String
"the"
theGen :: (NPG a -> NPStructG a) -> NPG a -> NPG a
theGen :: forall a. (NPG a -> NPStructG a) -> NPG a -> NPG a
theGen = String -> (NPG a -> NPStructG a) -> NPG a -> NPG a
forall a. String -> (NPG a -> NPStructG a) -> NPG a -> NPG a
prependStringGen String
"the"
a_ :: NPG a -> NPG a
a_ :: forall a. NPG a -> NPG a
a_ = String -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a
prependString String
"a"
a_Gen :: (NPG a -> NPStructG a) -> NPG a -> NPG a
a_Gen :: forall a. (NPG a -> NPStructG a) -> NPG a -> NPG a
a_Gen = String -> (NPG a -> NPStructG a) -> NPG a -> NPG a
forall a. String -> (NPG a -> NPStructG a) -> NPG a -> NPG a
prependStringGen String
"a"
ofThe :: NPG a -> NPG a -> NPG a
ofThe :: forall a. NPG a -> NPG a -> NPG a
ofThe = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"of the"
ofThePS :: NPG a -> NPG a -> NPG a
ofThePS :: forall a. NPG a -> NPG a -> NPG a
ofThePS = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertStringOp String
"of the"
ofTheGen :: (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
ofTheGen :: forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
ofTheGen = String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
forall a.
String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
insertStringGen String
"of the"
inThe :: NPG a -> NPG a -> NPG a
inThe :: forall a. NPG a -> NPG a -> NPG a
inThe = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"in the"
inThePS :: NPG a -> NPG a -> NPG a
inThePS :: forall a. NPG a -> NPG a -> NPG a
inThePS = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertStringOp String
"in the"
inTheGen :: (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
inTheGen :: forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
inTheGen = String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
forall a.
String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
insertStringGen String
"in the"
the_ofThe :: NPG a -> NPG a -> NPG a
the_ofThe :: forall a. NPG a -> NPG a -> NPG a
the_ofThe NPG a
t1 NPG a
t2 = NPG a -> NPG a
forall a. NPG a -> NPG a
the NPG a
t1 NPG a -> NPG a -> NPG a
forall a. NPG a -> NPG a -> NPG a
`ofThe` NPG a
t2
the_ofThePS :: NPG a -> NPG a -> NPG a
the_ofThePS :: forall a. NPG a -> NPG a -> NPG a
the_ofThePS NPG a
t1 NPG a
t2 = NPG a -> NPG a
forall a. NPG a -> NPG a
the NPG a
t1 NPG a -> NPG a -> NPG a
forall a. NPG a -> NPG a -> NPG a
`ofThePS` NPG a
t2
the_ofTheGen :: (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
the_ofTheGen :: forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
the_ofTheGen NPG a -> NPStructG a
f1 NPG a -> NPStructG a
f2 NPG a
t1 = (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
ofTheGen NPG a -> NPStructG a
f1 NPG a -> NPStructG a
f2 (NPG a -> NPG a
forall a. NPG a -> NPG a
the NPG a
t1)
for :: NPG a -> NPG a -> NPG a
for :: forall a. NPG a -> NPG a -> NPG a
for = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"for"
forPS :: NPG a -> NPG a -> NPG a
forPS :: forall a. NPG a -> NPG a -> NPG a
forPS = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertStringOp String
"for"
forGen :: (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
forGen :: forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
forGen = String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
forall a.
String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
insertStringGen String
"for"
of_ :: NPG a -> NPG a -> NPG a
of_ :: forall a. NPG a -> NPG a -> NPG a
of_ = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"of"
of_PS :: NPG a -> NPG a -> NPG a
of_PS :: forall a. NPG a -> NPG a -> NPG a
of_PS = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertStringOp String
"of"
of_Gen :: (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
of_Gen :: forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
of_Gen = String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
forall a.
String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
insertStringGen String
"of"
with :: NPG a -> NPG a -> NPG a
with :: forall a. NPG a -> NPG a -> NPG a
with = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"with"
and_ :: NPG a -> NPG a -> NPG a
and_ :: forall a. NPG a -> NPG a -> NPG a
and_ = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"and"
and_PS :: NPG a -> NPG a -> NPG a
and_PS :: forall a. NPG a -> NPG a -> NPG a
and_PS = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertStringOp String
"and"
and_Gen :: (NPG a -> NPStructG a) -> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
and_Gen :: forall a.
(NPG a -> NPStructG a)
-> (NPG a -> NPStructG a) -> NPG a -> NPG a -> NPG a
and_Gen = String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
forall a.
String
-> (NPG a -> NPStructG a)
-> (NPG a -> NPStructG a)
-> NPG a
-> NPG a
-> NPG a
insertStringGen String
"and"
andThe :: NPG a -> NPG a -> NPG a
andThe :: forall a. NPG a -> NPG a -> NPG a
andThe = String -> NPG a -> NPG a -> NPG a
forall a. String -> NPG a -> NPG a -> NPG a
insertString String
"and the"
parensNP :: NPG a -> NPG a
parensNP :: forall a. NPG a -> NPG a
parensNP = String -> String -> NPG a -> NPG a
forall a. String -> String -> NPG a -> NPG a
surround String
"(" String
")"