Product Design, Manufacturing & Innovation Resources
Hogar » Alcance léxico en R

Alcance léxico en R

1980
  • Gerald Jay Sussman
  • Guy L. Steele Jr.
Programador informático demostrando el alcance léxico en el lenguaje de programación R.

(Imagen generada únicamente con fines ilustrativos)

R utiliza el alcance léxico, un concepto heredado del lenguaje Scheme. Esto significa que los valores de las variables libres de una función se resuelven buscándolos en el entorno donde se definió la función, no en el entorno donde se llama. Esto hace que el comportamiento de la función sea más predecible e independiente del contexto de llamada, una característica clave para la programación funcional.

Lexical scoping, also known as static scoping, is a fundamental convention for looking up variable names in a programming language. In R, when a function needs to access a variable that is not defined locally (a “free variable”), it searches for that variable in the environment where the function was created. This “creation environment” is permanently attached to the function. This contrasts with dynamic scoping, used in some older languages, where the search would proceed up the chain of function calls (the “calling environment”).

Por ejemplo, consideremos una función `f()` que utiliza una variable `x` pero no la define. Si `f()` se define en el entorno global donde `x` es 10, entonces, independientemente de dónde se llame a `f()`, siempre utilizará `x = 10`. Incluso si se llama desde otra función que tiene su propia variable local `x = 20`, `f()` ignorará la variable `x` del entorno de llamada y utilizará la de su entorno de definición. Este comportamiento facilita la depuración y el razonamiento del código, ya que el comportamiento de una función está determinado únicamente por su propio código y el entorno en el que se definió.

Esta característica es crucial para los paradigmas de programación funcional, ya que permite construcciones potentes como los cierres, donde una función puede «recordar» el entorno en el que fue creada. Esto se utiliza ampliamente en la programación avanzada de R y en el desarrollo de paquetes, como en la familia de funciones `lapply` y en marcos de trabajo como Shiny para aplicaciones web.

UNESCO Nomenclature: 1203
- Informática

Tipo

Sistema abstracto

Ruptura

Incremental

Uso

Uso generalizado

Precursores

  • El concepto de alcance en los lenguajes de programación
  • El lenguaje de programación Lisp y sus dialectos
  • El lenguaje de programación Scheme, que popularizó el alcance léxico
  • El cálculo lambda como fundamento teórico de funciones y alcance

Aplicaciones

  • Creación de cierres en R para programación funcional
  • Desarrollo de espacios de nombres de paquetes para evitar conflictos de variables
  • Permitiendo técnicas de evaluación no estándar utilizadas en paquetes como dplyr
  • Construir código robusto y modular sin efectos secundarios

Patentes:

    Ideas para posibles innovaciones

    Debido al bloqueo del tráfico generado por bots, que actualmente supera los 40.000 al día, este contenido está reservado para los miembros de la comunidad.
    > Iniciar sesión < o > Registrarse < (100% gratis) para acceder a esto, al igual que a todo el demás contenido y herramientas restringidos.

    Relacionado con: alcance léxico, alcance estático, programación funcional, R, Scheme, entorno, cierre, variable libre, espacio de nombres, evaluación no estándar.

    Contexto histórico

    Alcance léxico en R

    1973
    1980
    1980
    1980
    1982-07-01
    1988-06-01
    1990
    1970-01-01
    1975-06-01
    1980
    1980
    1980
    1986-01-01
    1990
    1990

    (Si la fecha es desconocida o no es relevante, por ejemplo "mecánica de fluidos", se proporciona una estimación redondeada de su aparición notable)

    Invención, innovación y principios técnicos relacionados.

    Las imágenes a tamaño completo y las descargas sólo están disponibles, 100% gratis, para los miembros registrados.

    > Acceso <