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
?
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