Apples
Inform by default detects whether two objects can be disambiguated by any vocabulary available to the player. If so, it asks a question; if not, it picks one of the identical objects at random.
Generally this produces good behavior. Occasionally, though, two objects have some distinguishing characteristic that doesn't appear in the object name. For instance, suppose we've created a class of apples that can be told apart depending on whether they've been bitten or not:
The player can meaningfully type
or
but if he types
Inform will, annoyingly, ask
This gives the player no indication of why Inform is making a distinction. So here we add a special "printing the name" rule to get around that situation:
Inform will also separate the bitten from the pristine apples in inventory listings and room descriptions, even though it's not clear why; we can improve on that behavior thus:
Test me with "i / eat apple / i / eat apple / pristine / i / eat apple / pristine / i".
>(Testing.)
>[1] i
You are carrying:
three pristine apples
>[2] eat apple
You take a satisfying bite.
>[3] i
You are carrying:
three apples, some bitten
>[4] eat apple
Which do you mean, the bitten apple or a pristine apple?
>[5] pristine
You take a satisfying bite.
>[6] i
You are carrying:
three apples, some bitten
>[7] eat apple
Which do you mean, a bitten apple or the pristine apple?
>[8] pristine
You take a satisfying bite.
>[9] i
You are carrying:
three bitten apples