Product Design, Manufacturing & Innovation Resources
» Rにおける語彙スコープ

Rにおける語彙スコープ

1980
  • Gerald Jay Sussman
  • Guy L. Steele Jr.
プログラミング言語Rでレキシカル・スコープを実演するコンピューター・プログラマー。.

(画像はイメージです)

R言語は、Scheme言語から受け継いだ概念であるレキシカルスコープを採用しています。これは、関数内の自由変数の値が、関数が呼び出された環境ではなく、関数が定義された環境で解決されることを意味します。これにより、関数の動作がより予測しやすくなり、呼び出しコンテキストに依存しなくなります。これは、関数型プログラミングの重要な特徴です。

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

例えば、変数 `x` を使用するものの、定義していない関数 `f()` を考えてみましょう。`f()` が `x` が 10 であるグローバル環境で定義されている場合、`f()` がどこから呼び出されても、常に `x = 10` が使用されます。たとえ、独自のローカル変数 `x = 20` を持つ別の関数から呼び出された場合でも、`f()` は呼び出し元の環境の `x` を無視し、定義元の環境の `x` を使用します。このように、関数の動作は自身のコードと定義された環境のみによって決定されるため、コードのデバッグや理解が容易になります。

この機能は関数型プログラミングのパラダイムにとって非常に重要であり、関数が作成された環境を「記憶」できるクロージャのような強力な構造を可能にします。これは、`lapply`関数群やWebアプリケーション向けのShinyなどのフレームワークなど、高度なRプログラミングやパッ​​ケージ開発で広く利用されています。

UNESCO Nomenclature: 1203
コンピュータサイエンス

タイプ

抽象システム

混乱

増分

使用法

広く普及している

前駆物質

  • プログラミング言語におけるスコープの概念
  • Lispプログラミング言語とその方言
  • 字句スコープを普及させたプログラミング言語Scheme
  • 関数とスコープの理論的基礎としてのラムダ計算

アプリケーション

  • 関数型プログラミングのためのRにおけるクロージャの作成
  • 変数の競合を回避するためのパッケージ名前空間の開発
  • dplyrなどのパッケージで使用される非標準的な評価手法を可能にする
  • 副作用のない堅牢でモジュール化されたコードの構築

特許:

    潜在的なイノベーションのアイデア

    ボットによるトラフィック(現在1日あたり4万件以上)を排除するため、このコンテンツはコミュニティメンバー限定となっています。
    > ログイン < または > 登録 < (100%無料)でこれにアクセスできます。他のすべての制限付きコンテンツとツールも同様です。

    関連キーワード:字句スコープ、静的スコープ、関数型プログラミング、R、Scheme、環境、クロージャ、自由変数、名前空間、非標準評価。

    歴史的背景

    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

    (日付が不明または関連性がない場合、例えば「流体力学」などでは、その注目すべき出現時期の概算値が提示されます。)

    関連する発明、革新、および技術原理

    フルサイズの画像とダウンロードは、登録会員のみが100%無料で利用できます。