Hogar » Alcance léxico en R

Alcance léxico en R

1980
  • Gerald Jay Sussman
  • Guy L. Steele Jr.
Computer programmer demonstrating lexical scoping in R programming language.

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 lenguaje de programación. 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”).

For example, consider a function `f()` that uses a variable `x` but doesn’t define it. If `f()` is defined in the global environment where `x` is 10, then no matter where `f()` is called from, it will always use `x = 10`. Even if it’s called from another function that has its own local `x = 20`, `f()` will ignore the calling environment’s `x` and use the one from its definition environment. This behavior makes code easier to debug and reason about, as a function’s behavior is determined solely by its own code and the environment in which it was defined.

This feature is crucial for functional programming paradigms, enabling powerful constructs like closures, where a function can “remember” the environment in which it was created. This is heavily utilized in advanced R programming and package development, such as in the `lapply` family of functions and in frameworks like Shiny for web applications.

UNESCO Nomenclature: 1203
- Informática

Tipo

Sistema abstracto

Disrupción

Incremental

Utilización

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:

    Posibles ideas innovadoras

    Membresía obligatoria de Professionals (100% free)

    Debes ser miembro de Professionals (100% free) para acceder a este contenido.

    Únete ahora

    ¿Ya eres miembro? Accede aquí
    Related to: lexical scoping, static scoping, functional programming, R, Scheme, environment, closure, free variable, namespace, non-standard evaluation.

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    DISPONIBLE PARA NUEVOS RETOS
    Ingeniero Mecánico, Gerente de Proyectos, Ingeniería de Procesos o I+D
    Desarrollo eficaz de productos

    Disponible para un nuevo desafío a corto plazo.
    Contáctame en LinkedIn
    Integración de electrónica de metal y plástico, diseño a coste, GMP, ergonomía, dispositivos y consumibles de volumen medio a alto, fabricación eficiente, industrias reguladas, CE y FDA, CAD, Solidworks, cinturón negro Lean Sigma, ISO 13485 médico

    Estamos buscando un nuevo patrocinador

     

    ¿Su empresa o institución se dedica a la técnica, la ciencia o la investigación?
    > Envíanos un mensaje <

    Recibe todos los artículos nuevos
    Gratuito, sin spam, correo electrónico no distribuido ni revendido.

    o puedes obtener tu membresía completa -gratis- para acceder a todo el contenido restringido >aquí<

    Contexto histórico

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

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

    Scroll al inicio

    También te puede interesar