In the terminology of functional languages the term static binding has a different meaning, where it refers to how the values of free variables are determined in an expression. For static binding, the outermost binding of the free variable is always used. It's easiest to illustrate what this means by an example. Consider this fragment of ML-like code:

let x = 1
in
let f y = x + y
in
let g f y =
  let x = 3
  in
    f y
in
 g f 2

If static binding were used, the value of the free variable 'x' in the function f would be 1, even though the free variable 'x' is itself bound in the definition of g. If an ML dialect were used that uses static binding, this expression would evaluate to 3.

Most of the more modern functional languages use static binding, as it is one step towards attaining referential transparency. An expression that has free variables uses only the outermost binding, so it will have the same meaning in any context where it is visible. Examples of languages that use this strategy include OCaml and Haskell. Oppose dynamic binding.