You're passing the parameter of what to replace as being an antiform action, so it will be called on the elements.
It does NOT take a parameter (notice the slash dividing it from what comes after it? that's a strong semiotic hint that <ice> is not a parameter to word?)
...and it's an antiform, so you know it doesn't occur literally in the block.
Before this existed, I was using MATCHER which made an antiform action for a datatype:
Looking at this, I started to compare it to the & syntax that's been used in PARSE.
>> parse [2 4 6] [some &even?]
== 6
I haven't really warmed up to it very much.
So I wondered... what if PARSE used the trailing slash notation, assuming that meant run a function as a typechecker?
>> parse [2 4 6] [some even?/]
== 6
I find that more palatable than the leading-ampersand, for the reasons mentioned (looks better, and puts the slashy "barrier" at the end to semotically indicate "no parameters taken").
Though it doesn't have the generalization to other types:
And arguably that's a lot more literate and less-symbol-y. It better bridges the non-PARSE code with the PARSE code. (Though MATCHER would take its argument literally, e.g. the BLOCK! you pass it like [even? tag!] isn't being processed by the block combinator. Such combinators are not that common--ANY is another example--but I think they should be allowed.)
When you put this together with the idea of types as antiforms, it might mean being able to reclaim the & symbol entirely for something else.