Macros and closures are a bit alike. Here's I'll try to nail down one of their differences.
A closure is a function which carries with it a lexical environment. The returned block below, for example, carries around the lexical environment containing the variable $counter
:
sub create-counter(Int $start-value) {
my Int $counter = $start-value;
return { $counter++ };
}