Why does I7 declare arguments in two ways?

Are there any deeper reasons why Inform 7 has this inconsistent way of declaring arguments?

to decide whether (deck - a computer) is running any code:

versus

carry out program-statusing a computer (called deck):

To me it seems cleaner to always use the same syntax, “type (called arg)”.

1 Like

Hmm, I don’t know whether there’s a definitive answer, but my take on it would be:

There are some differences between phrases and rules. Any text is allowed in a phrase, so to declare an argument the whole thing must be in brackets. Phrases must also always declare the type.

Rules on the other hand use pattern matching and extra text isn’t allowed. Also, it may match a specific object, or a type. You may not need to give the argument a name, especially if it’s a specific object (though sometimes even if you just give a type.)