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.