Visual representation of lambda in BYOB and Snap!

What did it look like?

that does look terrible. I'm glad that it's now a grey ring instead.

Yeah. But what made it perfect was using a ring as the input slot decoration for a Procedure-type input, so you can put a function in that slot without thinking about rings at all. That way beginners can start using MAP and friends almost from day one, deferring function-as-data for later.

OK. How were 3.0 and 3.1 different?

Well the main difference is that 3.1 added OOP inheritance for sprites. But the difference about lambda expressions was that we kind of had the idea to use rings instead of THE BLOCK and THE SCRIPT constructors, so that Procedure-type inputs could handle making the closure for you, so you wouldn't have to inject a ring explictly, but we didn't really quite feel confident about it yet, so we made a kludge:

As you can imagine, people were constantly dropping blocks the wrong way, getting the opposite of whatever they wanted.

What perfected the notation was that instead of a solid grey box you now see a ring, and even more important, we made variables a special case. Dropping any expression except a variable gets a ring around it--the ring that's already in the slot; if you drop a variable the ring vanishes. This does what people want at least 95% of the time. For the other 5% we added ringify and unringify to the context menus of expressions.


By the way, the reason the manual used ITEM OF as the example is that, if you think about it, that's the only case that could reasonably go either way. Typically you want a ring around ITEM OF, but you could have a list of scripts and want to run one of the scripts in the list, so no ring.

I first heard of lambda (off topic: why does Unicode call it "lamda"?) in the Scratch Advanced Topics forums' introduction and welcoming topic (made by hardmath123) in this post by Brian. But I came across Snap!'s ringifying feature before reading that post and never could imagine what it actually did! It is hard to imagine that just a little grey ring can do so many wonderful things.

I did not understand anything.

yeah, I never knew about lambda until a few months after I got on snap (lol). When I started snap, I didn't know how the grey ring can do really great stuff either.

Do a web search for "lamda" and you can read an article about it. Apparently that's how it was spelled in the alphabet of ancient Greece, or something like that. For some silly reason the Unicode people care more about human languages than about computer science.

See, that's why Jens gets annoyed when everyone wants to program in Javascript instead. If you haven't already, read chapter VIII of the Reference Manual. It should blow your socks off.


That's not a silly reason

Uh, I see. Thank you very much.

Nobody understands when I'm being sarcastic. Am I going to have to stop doing that?

no, you need to say something like *sarcastic* when you say something sarcastic

Oh. I guess I'll have to make another MacOS keyboard abbreviation. ":~P" -> "sarcastic".