Dynamic variables

David R. Hanson, Todd A. Proebsting

Research output: Contribution to journalArticlepeer-review

3 Scopus citations


Most programming languages use static scope rules for associating uses of identifiers with their declarations. Static scope helps catch errors at compile time, and it can be implemented efficiently. Some popular languages - Perl, Tcl, TeX, and Postscript - offer dynamic scope, because dynamic scope works well for variables that "customize" the execution environment, for example. Programmers must simulate dynamic scope to implement this kind of usage in statically scoped languages. This paper describes the design and implementation of imperative language constructs for introducing and referencing dynamically scoped variables - dynamic variables for short. The design is a minimalist one, because dynamic variables are best used sparingly, much like exceptions. The facility does, however, cater to the typical uses for dynamic scope, and it provides a cleaner mechanism for so-called thread-local variables. A particularly simple implementation suffices for languages without exception handling. For languages with exception handling, a more efficient implementation builds on existing compiler infrastructure. Exception handling can be viewed as a control construct with dynamic scope. Likewise, dynamic variables are a data construct with dynamic scope.

Original languageEnglish (US)
Pages (from-to)264-270
Number of pages7
JournalSIGPLAN Notices (ACM Special Interest Group on Programming Languages)
Issue number5
StatePublished - May 2001


  • Control structures
  • D.3.3 [Programming Languages]: Language Constructs and Features - Dynamic scope
  • Languages

ASJC Scopus subject areas

  • Software
  • Computer Graphics and Computer-Aided Design


Dive into the research topics of 'Dynamic variables'. Together they form a unique fingerprint.

Cite this