Table of Contents

About

The scoping rules of a language determine how values are assigned to free variables (user variable) Free variables are not:

  • formal arguments
  • local variables (assigned inside the function body).

Closure

A function + an environment = a closure or function closure.

Hierarchy

Every environment has a parent environment; it is possible for an environment to have multiple “children” the only environment without a parent is the empty environment

Lexical scoping in R means that the values of free variables are searched for in the environment in which the function was defined.

If the value of a symbol is not found in the environment in which a function was defined, then the search is continued in the parent environment.

The search continues down the sequence of parent environments until we hit the top-level environment; this usually the global environment (workspace) or the namespace of a package.

After the top-level environment, the search continues down the search list until we hit the empty environment. If a value for a given symbol cannot be found once the empty environment is arrived at, then an error is thrown.