In this Unit we learned about two blocks with ringed inputs:
and 
Blocks with ringed inputs are called higher-order blocks (or outside of Snap! higher-order functions).
Higher-order because they operate not just on regular values like numbers and Booleans but on code as values.
To review, the
block expects a Boolean expression in its ringed input with one empty hole.
The ring turns the expression into a predicate.
then calls the predicate on each item in the list input and reports a new list of all the items that satisfy the predicate.
For example:

reports

And
expects an expression in its ringed input with two empty holes.
The block combines the values in its list input by first filling the two holes with the first two items. The expression combines them to produce a new value.
It then combines that value with the next item in the list, producing a new value, and so on, until it runs out of items in the list. Then it returns the last combined value.

A third higher-order block that we haven’t covered yet but which might be useful in your Survey project is
.
Its ringed input expects an expression with a single empty hole. It evaluates the expression once for each item in its list input and reports a new list of the results.

These three blocks are quite powerful.

They can be combined to perform almost any computation you want over lists of values.
One of Google’s great breakthroughs in data processing infrastructure was something called MapReduce which is basically these three blocks running on tens of thousands of computers.