Closure (computer programming)
Because closures delay evaluation–i.e., they do not "do" anything until they are called–they can be used to define control structures.  For example, all Smalltalk's standard control structures, including branches (if/then/else) and loops (while and for), are defined using objects whose methods accept closures.  Users can easily define their own control structures as well.