IE-0010: Concepts by curiousdannii · Pull Request #10 · ganelson/inform-evolution (original) (raw)

Make the token [D], where D is a description of a kind of object which is not a kind of thing, automatically infer any. In particular, [concept] would always mean [any concept], i.e., there would never be any attempt to apply touchability or visibility to concepts.

Neither change affects the meaning of existing source code.

This does affect any existing source code that uses non-thing objects (without any) as tokens. Small Kindnesses by Aaron Reed, for instance, uses '[room]' as a token and relies on placing specific rooms in scope for those commands to apply to those rooms.

The current state of affairs, where "visible" means "every, in or out of scope, in or out of play" and "touchable" means in scope plus one of: a room, a region, or an actually touchable thing, is highly confusing and a routine problem point for new users. Adding another exception to track, that any means the same thing for things that the absence of any means for non-things doesn't make things clearer.

I think a better choice would be to leave any in grammar tokens as is and to add new qualifiers to action specification assertions, for instance unconditional as a synonym for visible (and just saying that makes much clearer what visible really means) and scoped meaning what it sounds like. (It could be just defined in the docs as customary that when you're using concepts you generally want one unconditional concept.)

And I take it thing in action definitions continues to mean object and not thing ?

Edited to add: never mind the reference to scoped; that should remain the parser's concern and not be part of action specifications.