Source line order: kinds of action

I discovered another problem with line order. Is this one documented somewhere?

[code]Parlor is a room.

Kissing Mr Carr is unmaidenly behaviour.

Mr Carr is a man in Parlor.[move this line up to make the example compile successfully.][/code]

The compilation error is even less helpful this time:

I don’t blame the compiler for getting confused here, but this really should be documented, probably in 7.15 of the manual.

Actually, I’m going to venture out on a limb here, since I don’t know anything about how the compiler works… but… if the compiler encounters a problem that would be resolved if something in it were defined elsewhere (like Mr Carr), wouldn’t it be possible to postpone processing that block until the end of the source, in case it ended up making sense afterwards?

Isn’t this already documented in section 7.15?

The documentation for kinds of action is not nearly as clear as it should be – it should explain that the only way to define a KoA is by specifying an example, and probably that a KoA is a disguised “decide” phrase rather than a real kind – but I do think they give us fair warning that line order can make a difference.

Well, not as fair as the explanation of kinds mentioned in the other thread. I think this may be a minor case of reading between the lines, but I have to confess that my disordered brain skipped over this statement completely. It just wasn’t where I expected it to be.

From my brief experiments, it appears that it is not possible to use a “To decide whether” phrase in the condition for an action rule, despite the impression that I got from learning that a kind of action is itself really a “to decide whether” phrase. Personally, I would be happy to dispense with kinds of action completely if I could only use my own “to decide whether” phrase. But it seems there are concerns that make it impossible for action conditions to have such flexible definitions. It’s pretty amazing that they work at all, but if someone could explain why they have such conditions, I might feel less frustrated about the restrictions. For example, I just read through Chapter 7 and didn’t see any mention about why you can’t list multiple noun alternatives in the condition, or even the fact that you can’t. Am I being blind again? The only hint I found was in 7.13:

Here’s a very useful hint about how to get around the restriction, but it’s in a section titled “Going from, going to” - no hint that it also tells you how to specify the noun for an action in a more flexible way.

This is also confusing because “a rabbit-infested room” isn’t any more constant than “the location of the rabbit” - why is Inform willing to evaluate one thing at runtime and not the other?

Those are some of the places where I find Inform mysterious. About the kind of action as a “to decide whether,” maybe it’s that they compile to the same sort of thing in Inform 6? And my speculation would be that that the rabbit-infested issue has to do with the way this compiles – for some reason Inform has to evaluate the value of a noun at compile-time, but it can evaluate adjectives at run-time. There might even be a hint of this in the phrase “quantity which changes” – except that “quantity” is definitely not a term that’s defined in the I7 documentation, at least not in any obvious way. So yeah.