Es gibt drei Muster nach denen die Gültigkeit von Namen in Programmteilen geregelt ist:
Mit dem `lexical scope' kann wie in der Programmiersprache Algol ein `dynamic extent' verbunden sein, oder wie in Common-Lisp und in Scheme der `indefinite extent'.
Letzterer bedeutet, dass alle Variablen unbegrenzte Lebensdauer haben. Die unbegrenzte Lebensdauer wird allerdings dadurch eingeschränkt, dass Variable, die von nirgendwoher mehr im Programm erreicht werden können, als Müll vom Garbage-Collector beseitigt werden.
Closures können auch gesehen werden als Funktionen mit `lexical scope' und `indefinite extent'.