Clausura (informática)
# Clausura (informática)

En lenguajes de programación, una clausura o cerradura (del inglés closure) es una técnica para implementar ámbitos léxicos en un lenguaje de programación con funciones de primera clase. Una cerradura es un registro que contiene una función junto con el ámbito donde fue declarada. La clausura permite que la función acceda a los valores de las variables declaradas en el mismo ámbito, aun cuando la invocación ocurra fuera de este. El uso de clausuras se asocia con el paradigma de programación funcional.

Una clausura puede aparecer como una función de nivel superior, cuando una función está definida dentro de otra función, y la función interna se refiere a las variables locales de la función externa. En tiempo de ejecución, cuando se ejecuta la función externa, se forma una clausura, que consta del código de la función interna y las referencias a todas las variables de la función externa que son requeridas por la clausura.

Una clausura asocia a una función con un conjunto de variables "privadas", que persisten en las invocaciones a la función. El ámbito de la variable abarca únicamente al ámbito donde la función fue declarada, por lo que no puede ser accedida desde otra parte del programa. No obstante, la variable mantiene su valor de forma indefinida para las siguientes invocaciones. Como consecuencia, las clausuras pueden ser usadas para simular el encapsulamiento y la ocultación de la programación orientada a objetos.

El concepto de clausura fue definido por Peter J. Landin en 1964. Fue implementado de forma completa, por primera vez, como una característica del lenguaje de programación Scheme. Desde entonces, otros lenguajes de programación han sido diseñados para soportar clausuras.

## Ejemplos

Usando el lenguaje Perl:

