What's the [object] type for?

How do you use the Object type in custom procedures? What is it for?

Objects are sprites, costumes, or sounds. Probably more object types coming eventually. An operational definition is that an object is something that can be used as the first input to ASK or TELL, or the second input to OF.

Having said that, types in Snap! are just advisory; you can put any value in any input slot, although of course some blocks don't make sense with some inputs. The only exception is that the Procedure types (Command, Reporter, Predicate) and the semantically equivalent Unevaluated types do have a special meaning, namely, the input expression is thunked (turned into a procedure) instead of being evaluated.

(Hey, @jens, how would you feel about us putting a gray ring around the hexagonal input slot of REPEAT UNTIL? To get Scratchers' feet wet with the idea?)

Would you have to do that on the 'if' block then too?

No. Because REPEAT UNTIL prevaluates it, unlike IF. Check the docs.

This wouldn't be a change in the behavior, just making it visually apparent that REPEAT UNTIL has to re-evaluate the expression each time through the loop. (IF only needs its Boolean input evaluated once, as soon as it's called, so that can be a normal Boolean input rather than a Predicate function. What's special about IF are the C-shaped input slots, which aren't evaluated until IF decides which one it wants to evaluate.)

I like the idea of a ring in the Repeat Until block