Product Design, Manufacturing & Innovation Resources
Casa » Ambito lessicale in R

Ambito lessicale in R

1980
  • Gerald Jay Sussman
  • Guy L. Steele Jr.
Programmatore informatico che dimostra lo scoping lessicale nel linguaggio di programmazione R.

(Immagine generata a solo scopo illustrativo)

R utilizza lo scoping lessicale, un concetto ereditato dal linguaggio Scheme. Ciò significa che i valori delle variabili libere in una funzione vengono risolti trovandoli nell'ambiente in cui la funzione è stata definita, non in quello in cui viene chiamata. Questo rende il comportamento della funzione più prevedibile e indipendente dal contesto di chiamata, una caratteristica fondamentale per la programmazione funzionale.

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”).

Ad esempio, si consideri una funzione `f()` che utilizza una variabile `x` ma non la definisce. Se `f()` è definita nell'ambiente globale dove `x` è uguale a 10, allora, indipendentemente da dove venga chiamata, `f()` utilizzerà sempre `x = 10`. Anche se viene chiamata da un'altra funzione che ha una propria variabile locale `x = 20`, `f()` ignorerà il valore di `x` dell'ambiente chiamante e utilizzerà quello del suo ambiente di definizione. Questo comportamento semplifica il debug e la comprensione del codice, poiché il comportamento di una funzione è determinato esclusivamente dal suo codice e dall'ambiente in cui è stata definita.

Questa caratteristica è fondamentale per i paradigmi di programmazione funzionale, consentendo la creazione di costrutti potenti come le closure, in cui una funzione può "ricordare" l'ambiente in cui è stata creata. È ampiamente utilizzata nella programmazione avanzata in R e nello sviluppo di pacchetti, ad esempio nella famiglia di funzioni `lapply` e in framework come Shiny per le applicazioni web.

UNESCO Nomenclature: 1203
- Informatica

Tipo

Sistema astratto

Interruzione

Incrementale

Utilizzo

Uso diffuso

Precursori

  • Il concetto di ambito nei linguaggi di programmazione
  • Il linguaggio di programmazione Lisp e i suoi dialetti
  • Il linguaggio di programmazione Scheme, che ha reso popolare l'ambito lessicale
  • Il calcolo lambda come fondamento teorico per funzioni e ambito

Applicazioni

  • creazione di chiusure in R per la programmazione funzionale
  • sviluppo di namespace dei pacchetti per evitare conflitti di variabili
  • abilitazione di tecniche di valutazione non standard utilizzate in pacchetti come dplyr
  • creare codice robusto e modulare senza effetti collaterali

Brevetti:

    Idee e potenziali innovazioni

    A causa dell'eliminazione del traffico generato dai bot, che attualmente supera i 40.000 al giorno, questo contenuto è riservato ai membri della community.
    > Accedi O > Registrati L'accesso a questo contenuto, così come a tutti gli altri contenuti e strumenti riservati, è (100% gratuito).

    Argomenti correlati: ambito lessicale, ambito statico, programmazione funzionale, R, Scheme, ambiente, closure, variabile libera, namespace, valutazione non standard.

    Contesto storico

    Ambito lessicale in 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

    (se la data è sconosciuta o non rilevante, ad esempio "meccanica dei fluidi", viene fornita una stima approssimativa della sua notevole comparsa)

    Invenzioni, innovazioni e principi tecnici correlati

    Le immagini a grandezza naturale e i download sono disponibili, 100% gratuitamente, solo per i membri registrati.

    > Login <