Search code examples
gf

Ordinal number plus superlative adjective


In the RGL, Ord is a type which represents either an ordinal number (in words or digits):

mkOrd : Numeral -> Ord --“twenty-second”
mkOrd : Digits -> Ord  --“22nd”

Or a superlative adjective:

mkOrd : A -> Ord       --“smallest”

But not both.

What if I do want both though, like “(Tampere is the) second largest (city in Finland)”?

Or is there a way somewhere further up the tree that I can combine two Ord into a single Det?


Solution

  • Yes there is, it's just not in the API. There's a function in Noun.gf called OrdNumeralSuperl : Numeral -> A -> Ord, and you can use it by opening NounXxx in your concrete syntax, as follows:

    resource Test = open SyntaxEng, ParadigmsEng, (N=NounEng) in {
      oper
    
        myTest : NP = mkNP (mkDet the_Quant second_largest_Ord) (mkN "city") ;
    
        second_largest_Ord : Ord = N.OrdNumeralSuperl (mkNumeral "2") (mkA "large") ;
    }
    

    And you can see the result as follows:

    $ gf
    > i -retain Test.gf
    - compiling Test.gf...   write file Test.gfo
    > cc -one myTest
    the second largest city