Scheme style blocks in Snap!

It's just as well that it's directed to @bluebaritone21; that's who's writing the actual code! ;~)

I'm still trying to figure out why block variables are enough for this.

Oh. Using a block variable is a frill; it could be a global variable. The real point is that my GENSYM-HOLDER block isn't involved in metaprogramming; it's a regular old block such as you could have made in BYOB 1.0, and so it doesn't have screwy lack of scope issues.

And the functions that are built with metaprogramming can access it because Snap! is a Lisp-2, unlike Scheme, which is a Lisp-1, i.e., in Snap! access to block names is entirely separate from access to variable names. So the lack of an environment doesn't pose a problem.

Okay. That makes sense. I'll see if I can make it.