I was just tinkering with the
[ V] of [ V]
block.
I came to notice that when a script is provided it returns the same script but in the context of input 2. It does not evaluate the script. And this is the intended behavior. But my I then ask why this dose not go for the
this [caller V]
block.
Running
((this [caller V]) @>) of [ V]
will in fact evaluate the reporter.
To clarify, that is when #2 is a block refrance.
This is intended behaviour, and actually this topic is a duplicate. However, in said duplicate topic, it was never explained why this behaviour was necessary.
Let’s say you want to find the caller of your caller. You can get the caller of your script just fine:
To get the caller of that caller, however, you need to use OF:
Alright, that’s fine, but why do we need the exception this whole post is about? We can actually simulate not having this exception like so:

Alright, now we just have to wrap this in call and everything should work, right?
Wrong! It is here that we encounter the crux of the issue. REPORT THIS CALLER is reporting the caller of the script that it is in (in this case that caller is CALL reporter) - it occupies a sub-context of the THIS CALLER context we gave it earlier and not actually the exact same context. This is how it should work, but is also why there needs to be an exception in the OF block.
Is that clear? Probably not. Oh well, if it isn’t, ask a question and I may be able to explain it better.
why not just use ask [ V] for (()@>) @:>?
Intriguing:
J’en sais pas. Presumably Jens decided that THIS CALLER OF THIS CALLER read more naturally.
“J’en sais pas” is French for “I don’t know.” I’m Canadian so I use French in random situations. Particularly, I say “J’en sais pas” more often than “I don’t know”. ;~)