アカウント名:
パスワード:
それにしても、「名前空間の分離」なんていう表現が出てくること自体、Lisp の本質を知らないんだなと言うのは間違っていますか。私も Lisp に詳しいというほどではありませんけど、Lisp は名前自体がオブジェクトであって、名前すら変更可能だった覚えがあるのですが、違いましたっけ。そんでもって、名前もといシンボルに対して関数なり値なり好きにバインドできるのが特徴だったはずです。
Scheme も Common Lisp も動的スコープが使えないのですか? サブルーチンはどうするのでしょう。Perl で言うと local() が使えないってことになりそうですけど。スコープという言葉が出てくると名前空間が複数存在するということになりますし…。うーん、私も Lisp がよくわかってないなあ…。
(setq x 0) (defun bar () x) (defun foo () (let ((x 1)) (bar)))
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
「毎々お世話になっております。仕様書を頂きたく。」「拝承」 -- ある会社の日常
マニュアルに書いてあることも。 (スコア:1)
逆に私は Emacs Lisp しか知らないので、へええ普通の Lisp って違うんだ、と参考になりました。
「正規表現」に関しては、Perl との比
Re:マニュアルに書いてあることも。 (スコア:2, 参考になる)
あとは,Emacs-Lispが動的スコープを採用していることも書いておいていただけるとうれしいですね(自分でやれといわれそうですが).Schem
動的スコープなくて実用可能? (スコア:1)
それにしても、「名前空間の分離」なんていう表現が出てくること自体、Lisp の本質を知らないんだなと言うのは間違っていますか。私も Lisp に詳しいというほどではありませんけど、Lisp は名前自体がオブジェクトであって、名前すら変更可能だった覚えがあるのですが、違いましたっけ。そんでもって、名前もといシンボルに対して関数なり値な
Re:動的スコープなくて実用可能? (スコア:1)
「名前空間の分離」となんとなく話がずれているような。
「シンボル」という識別用オブジェクトと、それの表記(printname)が独立している、ということを言ってるんだと思いますが、それ自身はあまり重要なLISPの特色ではないです。(そんなのを駆使するのは、だいたいLISPプログラミングのパズルくらい。)
元ネタで「名前空間の分離」をいっているのは、おなじシンボルに対し、関数としての値と、変数としての値が別々に管理されている、ということで、これが、scheme や C でのシンボル(identifier)と異なる、ということが論点でしょう。
CやJavaも静的スコープですが、それほど問題ないですよね。それと同じですが、、、
動的/静的スコープとは、
で、(foo) の値が何になるか。静的なら 0、動的なら 1。
(もっと深遠な問題について議論しているのなら、失礼。)