A possibly neater implementation of ALL in Inform 7

It seems Inform can’t distinguish between TAKE ALL and TAKE ALL BOOKS. I believe I found a neater way to re-implement how ALL is handled in Inform 7, and simplifies the language to boot. Here’s the crux:A thing can be all. A thing is usually all. The player is not all. Understand the all property as describing a thing.And that’s about it. Here’s a compile-able sample, using ALLL (with an extra L to avoid complications) that shows Inform picks up the appropriate things.[code]
“all as adj” by Ron Newcomb

A thing can be alll. A thing is usually alll. The player is not alll.
Understand the alll property as describing a thing.

Heroism, Courage, and Loyalty are in the library.
Heroism, Courage, and Loyalty are undescribed, not alll.

A book is a kind of thing. Understand “book/books” as a book.

A Time To Kill, The Great Gatsby, and Lord Jim are books in the library.

A bookmark and a candle are in the library.

The library is room.

Test me with “take alll / take alll books”
[/code]produces:

Obviously the final implementation would perform the action on each item rather that as which-do-you-mean. This is just for illustration purposes.

Anyone foresee problems with this idea? If adopted, then the rulebook “deciding whether all includes” can go away, objects being set at compile time or at runtime as “all” just like any other property.

Forgot to add: implications like “Scenery is usually not all.” would exist so scenery is not by default affected by TAKE ALL (or whatever) but can, again, be changed categorically or only in special circumstances like any other object’s property.

One of the nice things about the current rule is that you can specifically rule out certain objects for certain actions - if you don’t want clothes to be part of all when taking, then that’s easy enough.

It’s clearly possible in the extension, too, but more complicated.

I suspect there’s some trickier stuff, but that’s off the top of my head, given recent interactions.