One of the things that bothers me about Inform 7 is that it’s woefully inconsistent. This makes learning the language hard, and harder than it needs to be. If the prospective programmer/author can’t learn general principles, then he has to learn a sea of specifics. Which of the two leaves him better able to master the language? For certain, it is not the latter. The latter is a brittle system that leaves the learner timid, uncertain, and unwilling to go beyond what he has learned, because all he knows are a set of specifics which do not make much sense together. In the former case, the learner is encouraged and supported in his creativity by the language itself. The former case is like giving someone wings; the latter is like surrounding them with an army of kobolds, which bang them on the toes every time they step outside of the circle.
Now, here’s a specific case of I7 inconsistency:
Say “You jump artfully to the floor and land on all four paws.”;
Now elevation of player is 0 feet;
Move player to location, without printing room description;
This fails to compile, of course, because the last line omits the article “a” before “room description.” I kid you not. This is inconsistent, not only with objects (which can easily be created without an “a” or “the” at all), but it’s maddening from a learnability perspective, senseless from a linguistic perspective, and it’s schoolmarmish and lazy from a coding perspective. The code here was not written with the linguistic sensitivity that I7 claims; it was written to find THAT EXACT PHRASE. The article can safely be omitted without compromising the understanding of the sentence. There is no need for the parser to look for a phrase that includes the article and doing so feels like a ruler rap across your knuckles.