> A closure is a function that returns another function,
No a closure is (in normal speak) only a function which is accessing variables outside from it's own body at declaration time.
The surrounding is not necessarily "another function" and the closure function is not necessarily "returned".
Technically the combination
- function plus
- "enclosed" variables
is called closure!
see Closure_(computer_programming)
Most people ignore these variables as implementation detail and keep concentrating on the "closure function" calling it simply the closure.
update
Here an example of getter and setters implemented as closures which don't fall under your definition.
{
my $a;
sub get_a { return $a }
sub set_a { $a = shift }
}
Update:
more examples here perlfaq7#What's-a-closure%3f |