META-GROUP! takes the evaluative behavior of GROUP! and metas the product:
>> (1 + 2)
== 3
>> ^(1 + 2)
== '3
>> (find [a b c] 'd)
== ~null~ ; anti
>> ^(find [a b c] 'd)
== ~null~
That makes sense. But what should META-BLOCK! do?
META-BLOCK! actually does something parallel to the evaluator's META-GROUP! in PARSE. Because in PARSE, the blocks are not "inert". It means give back the meta form of what the block rule synthesizes.
>> parse "aaab" [some ^["a" | opt "b"]]
== ~null~
So there you got a quasiform and not an antiform of null (from the match of the optional "b" not being there).
But in the main evaluator, it currently just quotes the block:
>> ^[a b c]
== '[a b c]
A synonym for quote [a b c]. Pretty useless, right?
Maybe Not Useless...
Consider my desire to have a proper FOR dialect.
>> for x [1 to 3] [print x]
1
2
3
And then, the concept of "going meta" struck me as interesting:
>> for x meta [1 to 3] [print x]
1
to
3
Which would mean that FOR when given a quoted block would enumerate its contents vs. run the dialect. Then you could also write that as:
>> for x ^[1 to 3] [print x]
1
to
3
It would even be semantically different if it did not bind the block, e.g. acted as a synonym for meta '[1 to 3]
Cute, but we don't want to generalize it to groups, ^(...)
needs to evaluate the group and give the meta result. So this would be specifically for taking blocks up a meta level.
I guess we'll have to see how it plays out. I can't think of another behavior at the moment.