This is a noble addition to the long history of expressions that evaluate to themselves! The canonical one is
((λx . x) (λx . x))
which in Snap! would be
which is also an infinite loop, like yours. I guess yours works at the level of syntax (notation) whereas this CALL one works at the level of semantics (meaning).
this script seems to report the current script as a procedure value by reference...?! There must be some crazy stuff you can do with that, even beyond what I've already seen.
I'm just going to put every bug about the metaprogramming blocks here so that I don't have to make a new topic for every bug I find that floods the forum.
Another (minor) bug in this: if you ringify the this script which got "stuck" in the define block, you can drag it out leaving a large gap in the define block where it used to be, which also prevents you from saving/exporting the project: demo project here