Maison » Portée lexicale dans R

Portée lexicale dans R

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

R utilise la portée lexicale, un concept hérité du langage Scheme. Cela signifie que les valeurs des variables libres d'une fonction sont résolues en les trouvant dans l'environnement où la fonction a été définie, et non dans celui où elle est appelée. Cela rend le comportement de la fonction plus prévisible et indépendant du contexte d'appel, une fonctionnalité clé de la programmation fonctionnelle.

Lexical scoping, also known as static scoping, is a fundamental convention for looking up variable names in a langage de programmation. 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
- Informatique

Taper

Système abstrait

Perturbation

Incrémentale

Usage

Utilisation généralisée

Précurseurs

  • Le concept de portée dans les langages de programmation
  • Le langage de programmation Lisp et ses dialectes
  • Le langage de programmation Scheme, qui a popularisé la portée lexicale
  • Le calcul lambda comme fondement théorique des fonctions et de la portée

Applications

  • création de fermetures en R pour la programmation fonctionnelle
  • développement d'espaces de noms de packages pour éviter les conflits de variables
  • activer les techniques d'évaluation non standard utilisées dans des packages comme dplyr
  • construire un code robuste et modulaire sans effets secondaires

Brevets:

    Idées d'innovations potentielles

    !niveaux !!! Adhésion obligatoire

    Vous devez être membre de l'association pour accéder à ce contenu.

    S’inscrire maintenant

    Vous êtes déjà membre ? Connectez-vous ici
    Related to: lexical scoping, static scoping, functional programming, R, Scheme, environment, closure, free variable, namespace, non-standard evaluation.

    Laisser un commentaire

    Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

    DISPONIBLE POUR DE NOUVEAUX DÉFIS
    Ingénieur mécanique, chef de projet, ingénierie des procédés ou R&D
    Développement de produits efficace

    Disponible pour un nouveau défi dans un court délai.
    Contactez-moi sur LinkedIn
    Intégration électronique métal-plastique, Conception à coût réduit, BPF, Ergonomie, Appareils et consommables de volume moyen à élevé, Production allégée, Secteurs réglementés, CE et FDA, CAO, Solidworks, Lean Sigma Black Belt, ISO 13485 médical

    Nous recherchons un nouveau sponsor

     

    Votre entreprise ou institution est dans le domaine de la technique, de la science ou de la recherche ?
    > envoyez-nous un message <

    Recevez tous les nouveaux articles
    Gratuit, pas de spam, email non distribué ni revendu

    ou vous pouvez obtenir votre adhésion complète - gratuitement - pour accéder à tout le contenu restreint >ici<

    Contexte historique

    (si la date est inconnue ou non pertinente, par exemple « mécanique des fluides », une estimation arrondie de son émergence notable est fournie)

    Inventions, innovations et principes techniques connexes

    Retour en haut

    Vous aimerez peut-être aussi