Why can unringed blocks be used as data?

Hi. I recently came back to Snap*!* to check its development history, and I’ve found that you can now use unringed blocks as data. I’m simply wondering how that is useful.

  1. What can unringed blocks do that ringed blocks can’t? What inspired their addition?
  2. Do unringed blocks not complicate Snap*!*’s visual language? I feel that rings clearly express the idea of unevaluated expressions. It appears that the user can no longer use rings as a sole indicator of whether or not an expression is evaluated.

Thank you!

from what I understand, you can’t really use unringed blocks. They’re meant for visual blocks like SAY, where a ring can clutter the bubble.

if you want to manipluate them, you have to put them in a ring via a block like this:
Matrix transform 2D script pic

Only in dev I think, so it is experimental.

I don’t believe that is the reason.

Yes, although I’m not really sure the difference between this and a ring.

What are you talking about?

Probably this in dev:

So this was added for the new tutorials feature. It’s basically so you can day blocks and drag and drop them from a speach bubble into the editor.

P.S.: Can unringified blocks be able to be displayed and be draggable anywhere on the stage, not just in speech bubbles? What if I hate the aesthetic of speech bubbles?

as a fledgling schemer, i was thinking that it would be the difference between a lambda and the unevaluated code within that lambda

to demonstrate, i think:

(define foo (lambda (x) (* x x)))
(foo 2) => 4

(define bar '(* x x))
(car bar) => '*

the closest snap equivalents?:


the cool thing about it in scheme is that you can manipulate code as lists, they’re entirely interchangable. but unfortunately, Snap*!* is scheme and smalltalk(?) in a trenchcoat, with fake glasses and mustache, trying to get into a G-rated movie.

I’m pretty sure you can do this here too. In what sense are you talking about?

what is this? sorry if it’s something obvious.

it means new or less experienced


Ringified expression is a closure, expression + state (environment)


Expression has no context


BTW: there is something wrong with the launch/run blocks in the dev version. Variables are not accepted in the input slot.

thank you!

I’ve been breaking a couple of things while experimenting with … hell freezes over … type annotations. I’ve just - I think - fixed this bug. Please let me know if you still encounter such issues (also elsewhere).

Can’t you already…?


I guess there is some difference:

Yes, but there’s a ring around it in the speech bubble.

To clarify, the new addition is purely for aesthetic?

Not purely, as you can see in some previous replies, but it is part of it

here:
xml script building script pic

thanks! fixed in dev…