Question about funny I6 error message

As everyone knows, if you write a dict word with the //p suffix (like 'rocks//p'), the compiler sets the plural flag (bit 2) on the dict word entry.

If you try to put some other letter after the slashes (like 'rocks//q'), you get this error:

Expected ‘p’ after ‘//’ to give number of dictionary word

This is already badly phrased – it sounds like you’re defining a numeric value for the dict word. But in Glulx, it’s even weirder:

Expected ‘p’ after ‘//’ to give gender or number of dictionary word

Anybody remember why “gender” is mentioned there? Is there an alternate library or language where bit 2 is used as a gender marker?

7 Likes

Poking around, I see that that message first appears in 6.10.

Inform 6.10 release notes

(e) Dictionary words which end //p are marked as “pluralising”.
For instance,

‘grapes//p’

enters the dictionary as the word ‘grapes’, marked as pluralising. This does not mean that it’s a plural word in the ordinary linguistic sense. It means that it can refer to more than one game object.

Inform 6.10 release notes addendum

There are four new attributes:

  • male
  • female
  • neuter
  • pluralname

(Well, actually “female” has been around for ages.) The first three aren’t useful in English-language games except to give the genders of people. (Note that you can give the “neuter” attribute to animate but sexless object such as a computer, if you so wish. This affects the handling of words like “it”, “him” and “her”.)

“pluralname” should be given to an object whose short name is linguistically a plural. For instance, an object called

“pillars of ice”

ought to have “pluralname”: this makes the library messages more grammatical. You might see something like

> OPEN PILLARS
Those aren’t openable.

instead of “That isn’t openable.”.

These are fringe benefits from the stricter sense of grammar which the multilingual parser can’t do without.

Given these things arriving at the same time, it seems plausible that the message could be a vestige of some abandoned-during-development scheme to directly associate gender with dictionary words via, e.g., //m, //f, instead of just associating dictionary words with objects and assigning genders to objects. But, of course, I’m speculating.

3 Likes

The only problem with that theory is that the “give gender or number” error message was added in 6.30 with the Glulx back-end! In 6.10 only the “give number” message existed.

I must have added “gender”, but I don’t have any record of why.

I see there’s an old suggestion entry:

Allow arbitrary flags to be set on dictionary words, so along with ‘cats//p’, one might say ‘furniture//m’ to mark mass nouns .

Context indicates that this line was added in the 6.3x era, but as far as I know no code was ever written to support it.

My conclusion at this point is that I should rewrite the error message (both platforms) to say

Expected ‘p’ after ‘//’ in dict word (plural flag)

…as this will be clearer.

4 Likes

From the file text in inform610_source.zip:

                        error_named("Expected 'p' after '//' \
to give gender or number of dictionary word", dword);
3 Likes

Pff. I went and looked at that file and still missed the word “gender” there. Power of expectations.

So it was “gender and number” in 6.20, just “number” in 6.21, and then I somehow managed to reintroduce the word in the Glulx update. Okay, at least that makes sense of the timeline.

4 Likes