A simple block
a, b -> a * b
A predicate block
a, b [a < b] -> a * b
A predicate block passed to range.map:
1..10 map: n [% 2 == 0] -> n * n
>> 4,16,36,64,100
A multiple-predicate block passed to stream.map:
lexer-stream map: char
[is-digit?] -> stream read-identifier
[is-alpha?] -> stream read-number
A few more details: impulse-language.html