スコープが囲まれた関数に拡張されないような方法で言語が定義されている言語はありますか?換言すれば、以下の(Pythonのような構文)のようなコード言語がある:Xは関数fact
内部で定義されていないためグローバル変数のないプログラミング言語はありますか?
>>> x = 3
>>> def fact(n):
... print x
... return reduce(lambda u, v: u*v, xrange(1, n+1), 1)
...
はエラーを与えるだろうか?
一般に、の範囲には、の機能に定義されている機能が含まれていない言語がありますか?
を編集してください:有益なコメントありがとうございます。問題なので
:私はこのことについて考えた理由は、それを含む機能が提供するすべての環境へのアクセスを有する内部機能の状況は彼のargument against OOPにジョー・アームストロングで説明した状況に私に怪しい近くに聞こえるということです オブジェクト指向の言語では、 が暗黙環境のすべてを持っています。 彼らはそれらを持ち歩いています。あなたは バナナを欲しがっていましたが、バナナを持っている ゴリラとジャングル全体 でした。
Newspeakにはグローバルネームスペースがありませんが、どのように動作するのかわかりません。
PythonspeakまたはSystemの多くの言語で__builtins__
からインポートされた組み込み関数の問題を、以下のブライアンのコメントでは、すべての関数のインタプリタ/コンパイラによって人工的に導入することができます。結局のところ、彼らはほとんど常に最初の場所で特別に扱われます。もう1つの選択肢は、それらを関数のパラメーターとして渡されるオブジェクトのメソッドとして持つこと、または内部からモジュールとしてインポートすることです。
これは何ですか? – Blindy
'print'、' reduce'、 'xrange'もいくつかの外側スコープから解決される識別子のように見えます。なぜこれがめったに役に立たないのかを示しています。 – Brian