Speaking a little about binding...
...given how pure virtual binding is evolving, we are now considering BLOCK! to be "evaluative" because it will pick up bindings from the local environment... while quoted things will not. (The previous iteration of pure virtual binding had all values--including quoted ones--getting binding, because binding propagation was done in all structural operations... including PICK and FOR-EACH... leading to a mire of multiply-applied binding that is now being reined in with the consequence of living in a mostly-unbound world.)
To be consistent here, we'll need anywhere a BLOCK is being represented "by value under evaluation" to quote it:
>> block: '[foo]
>> foo: <bar>
>> obj: make object! [b: block]
== make object! [
b: '[foo]
]
Use your imagination that we're actually in a rich terminal where that block "argument" to the MAKE OBJECT! is a rendering of something that you could get the address of and execute. If you did, you would want that quote on the [foo] block to indicate that it should not pick up a binding.
Thanks to doing string interpolation by putting strings in blocks vs. giving strings bindings, this won't be needed for strings.