Non-binary Gender Options, the Singular They, and Inform 7

I’ve hacked Gender Options by Nathanael Nerode to include a non-binary option, which uses the singular they for pronouns. Later I might add configurable pronouns, but for now. But of course, I7 doesn’t know how to conjugate for the singular they, and we get things like “they carries the book”, etc.

My reason for posting is that I don’t really know where to go from here. Updating the original extension’s i6 code was just pattern-matching. I don’t even know where to start to get into verb conjugation. I DM’d Nathanael Nerode to see if we wanted to take it on, but he doesn’t seem to stop in often. So I’m looking for one of these things:

  1. Someone who wants to dive into the conjugation code;
  2. Someone who can get me pointed in the right direction;
  3. Some who knows Nathanael and can alert him to check his DMs.

Thanks to anyone who can help!


I have a mostly-working (I think; I need to fix an obvious problem before I get to thorough testing to have an informed opinion on what less obvious problems might exist) extension that handles configurable pronouns and matching verb conjugation that’s very high on the list of things I want to get back to when I have the time. There’s a version of it here: Fluid Pronouns, albeit not the most recent version and I don’t remember what state it’s in. It’s for 9.3/6M62.

But you can see how I tackled the matching conjugation issue:

most-recent-reference-value is a kind of value.
The most-recent-reference-values are pronominal and nominal.
A thing has a most-recent-reference-value called most recent reference.
The most recent reference of a thing is usually nominal.
Before printing the name of a thing (called item): now the most recent reference of the item is nominal.

and then when a pronoun is said:

now the most recent reference of the prior named object is pronominal;

And the heart of determining the grammatical number of a verb being conjugated is PNToVP in ListWriter.i6t, which in my extension becomes:

[ PNToVP ; ! gna;
	if (prior_named_noun == player) return story_viewpoint;
    if (prior_named_list >= 2) return 6;
    if (prior_named_noun) {
      if ((prior_named_noun provides (+ most recent reference +)) && prior_named_noun.(+ most recent reference +) == (+ pronominal +)) {
        if (prior_named_noun.(+ third-singular-pronoun +) && prior_named_noun.(+ third-singular-pronoun +) has pluralname) return 6;
        return 3;
      if (prior_named_noun has pluralname) return 6;
	return 3;

…which doesn’t make complete sense out of context, 'cause it refers to other things in my extension not otherwise mentioned in this post.

1 Like

Since [regarding X], [they], and so on use a global variable for the object most recently referenced, is there a reason to use a new property instead of another global flag?

Off the top of my head, printing a subject pronoun only results from the text substitutions [they] and [They]. So you could set the “pronominal” flag to true in those places (and false in the “printing the name” activity as you showed), and then check that global flag in the PNtoVP routine instead of going through the (admittedly minor) hassle of property checking.

1 Like

At this remove, I’m not sure. I’m sure refactoring will turn up all sorts of things that could/should be simpler – this is a WIP, which I don’t usually share. Going into this, I had little idea how I’d do the things I wanted to do and was figuring it out as I went along; in general, once a given thing worked, I moved on.


I’m probably missing the obvious here (and I’m neither a linguist nor a native speaker of English), but what happens when you just use Inform’s plural 3rd person pronoun? Are there cases where singular they and plural they are conjugated differently?

If I say:

say '[regarding X][They] [go] to the zoo.'

where X is third-person singular, then [go] will always be conjugated as “goes”, regardless of what [They] is translated as.

1 Like

Ah, I see. I was thinking of the player character, but you’re thinking about the more general case which includes NPCs. (And you can’t just make them plural-named, because then things don’t work when you’re printing their names rather than their pronouns.)

1 Like

The issue is that I7 is deeply attached to basing the grammatical number for purposes of conjugation on whether the thing that’s the subject is singular-named or plural-named, and it does the same thing whether one used a pronoun or not: it doesn’t have a concept of pronouns having a different grammatical number from the antecedent.


If you use the third-person singular viewpoint (as my WIP does), then it’s a problem even for the PC.


I suppose it could also be a problem for royalty. “We decree that…” vs “the monarch decrees that…”. But Inform already requires special cases for first-person and second-person pronouns anyway.

1 Like

…and actually, there is: the reflexive case, where “themself” would be preferable to “themselves” for a singular antecedent.


True, though a lot of people (and style guides) still prefer “themselves”.

I think there’s a good precedent in “yourself” and “ourself” (used with the originally-plural singular “you” and singular “we”), but it’ll always take the style guides a while to catch up.

1 Like

Thanks for pointing me to your work and pointing out the crucial I6 code. I’m trying to adapt it to what I’ve been doing, but it got stopped in the code generation stage:

Problem: unable to find definitions for the following name(s): P_most_recent_reference, P_third_singular_pronoun

This was in v10 – might that be the problem? You’ll have to pardon me – I’m in a bit over my head where internals of I7 are concerned.

1 Like

In v10 you have to do this:

An object has a most-recent-reference-value called most recent reference.
The most recent reference property translates into Inter as "most_recent_reference".

and then anywhere the I6 inclusions reference it, replace (+ most recent reference +) with most_recent_reference. (And same with third_singular_pronoun.)


Excellent! I think I have it working.