Search code examples
gf

Difference between VQ and V2Q


To output a verb phrase that has an object as a question, then as it seems RGL only offers two functions:

VQ -> QS -> VP
V2Q -> NP -> QS -> VP

And in these two functions, the verb type was divided into two different categories. But the type V2Q has a parameter that requires adding a preposition to the sentence. In order to generate the sentence Tell me who I am I used the following code:

MySentence = {s = (mkPhr 
                      (mkImp 
                        (mkVP 
                          (mkV2Q 
                            (mkV "tell") 
                            (mkPrep "")) 
                          (i_NP) 
                          (mkQS 
                            (mkQCl 
                              (mkIComp (who_IP)) 
                              (i_NP)))))).s };

The code above generates the output I desire without a problem. So my question is, is there any reason the preposition was added to the verb V2Q? Or was this output generated in a wrong way?


Solution

  • First, yes you constructed the sentence correctly.

    Why is there a slot for preposition in V2Q

    In general, all V2* (and V3*) may take their NP object as a direct object, like eat ___, see ___, or with a preposition, like believe in ___.

    This is more flexible than forcing all transitive verbs only take direct objects, and all prepositional phrases to be analysed as optional adverbials. Take a VP like "believe in yourself", it's not that you're believing (something) and also your location is yourself. It's nice to be able to encode that believe_V2 takes an obligatory argument, and that argument is introduced by the preposition in.

    (Side note: for a VP like "sleep in a soft bed", "in a soft bed" is not an obligatory argument of sleep. So then we just make sleep into an intransitive verb, sleep_V, and make in a soft bed into an Adv.)

    So, this generalises to all verbs that take some NP argument (V2V, V2S, V2Q, V2A). Take a VP like "lie [to children] [that moon is made of cheese]": the verb lie is a V2S that introduces its NP object with the preposition to.

    In fact, many RGL languages offer a noPrep in their Paradigms module—you can Ctrl+F in the RGL synopsis page to see examples.

    The constructors of V2Q

    So why are you forced to make your V2Q with mkV2Q (mkV "tell") (mkPrep ""), even when there is no preposition?

    More common verb types, like V2, have several overload instances of mkV2. The simplest is just mkV2 : Str -> V2. Since it's such a common thing for transitive verbs to have a direct object (i.e. not introduce their object with a preposition), and there are so many simple V2s, it would be pretty annoying to have to always specify a noPrep for most of them.

    V2Q is rarer than V2, so nobody just hasn't bothered creating an instance that doesn't take a preposition. The constructor that takes preposition is more general than the constructor that doesn't, since you can always choose the preposition to be noPrep. Well, I just pushed a few new additions, see here, so if you get the latest RGL, you can now just do mkV2Q "tell".

    This kind of thing is completely customisable: if you want more overload instances of some mkX oper, you can just make them.