How do I stop the caller of the current block?

how do I stop the caller?

figured it out

run (({stop [this block V]} @>) of (this [caller V])) @:>

or tell (this [caller V]) to ({stop [this block V]}@>) @:>

Isn't it fantastic that you can actually do that? I don't think anything quite like that is in any other language, although it's clearly related to the first class continuations of Scheme.

I feel like it also hinges from the fact that snap is multithreaded instead of the standard single threading of most languages.

Hmmm...

stops the test script for me

what about putting the block you made in a custom block?

???
stop this block should not work this way ...
It acts like stop this script

I think it might be stopping the "run" block itself, not the custom block

it behaves as if it was wrapped in an "if <true>" block instead of a definition

It does not work this way

That's the point. Ringified stop is not aware of its lexical nor dynamic scope ,i.e., being part of the custom block.

My guess is that this behavior is connected with tail call elimination.

It's not a big deal, but this * is rather a lexical context without reference to running process/thread, so telling to stop this * does not work


The same is true for untitled script pic (26)

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.