(Nobody has posted on this thread for a while, but it seemed worthwhile to keep it going, if only because there is no other venue for communicating feature requests at the moment.)
Another thing that I’d really like to see in the next version that is perhaps less of a reach technically: the ability to use a phrase in the same way that an adjective can be used when creating a condition. (Again, I hope that I’m just not missing something here – please correct me if so!)
I have run into this numerous times when trying to use the “is listed in” phrase for lists, or when trying to make use of my own phrases. An example of frequently-attempted incorrect code would be:
...
let target doors be the list of open doors that can be seen by the actor;
let chosen door be a random door that is listed in target doors; [won't compile]
...
Now, I know that, in that particular example, it would be easy enough to say:
...
let chosen door be a random open door that can be seen by the actor;
...
or alternatively to create a special purpose global variable and associated definition:
...
Target doors is a list of doors that varies.
Definition: A door is short-listed if it is listed in target doors.
...
let chosen door be a random open short-listed door;
...
The drawback of the first option is that if I have to make the same check in multiple contexts within the same phrase, I can’t save any work for the computer by creating the list once and reusing it – instead the same conditions must be included in any other “a random…” phrase, and the set of doors must be computed each time.
The drawback of the second option is sense of awkwardness and the need to create (and remember) assorted special-purpose globals and their associated adjectives.
By my best guess, the underlying issue is that the phrase “is listed in” requires two parameters while the adjective requires only one. However, the second parameter (target list) is constant in this usage, so there’s only one “degree of freedom”. To my untrained eyes, it seems as though it should be possible for the compiler to recognize this phrasing and to create a structure similar to that which is created manually in the second option.
I would also really like to be able to use multiple relations in a condition without creating and invoking special-purpose adjectives, as in:
...
The interest relation relates various people to various things.
The verb to be of interest to means the reversed interest relation.
...
let chosen door be a random door that can be seen by the player and that is of interest to the player; [won't compile]
...
The phrase “and that” would have to signify another sub-condition applicable to the same target as “open” and “that can be seen by the player”. So the following would be equivalent:
a random open door that can be seen by the player;
a random door that is open and that can be seen by the player;
It would also be nice to be able to use more than one form of the verb when describing a condition using a relation, as in:
...
let chosen door be a random door that the player can see; [won't compile; compare "that can be seen by the player"]
...