アカウント名:
パスワード:
> 最初の「変数と関数の名前空間」なんてのは、
タレコミ文に「ほかのLisp処理系と比べてEmacs Lispが異なる点」なんて書いてあったんで、ここにはバッファローカル変数がどうとか、そんな名前空間(?)とスコープの話が書いてあるかと思って読んだら、ちょっと拍子抜けしちゃいました。
ま、確かにEmacs Lispの(symbol-value SYMBOL)と(symbol-function SYMBOL)が独立しているってのも、Schemeなどと比べれば特徴と言えるのかもしれませんが、Emacs Lispならではの混乱させられる変数の話と言って私が真っ先に思い出したのは、make-variable-buffer-localとかmake-local-variableとかで指定される変数の振る舞いについてでした。いわゆるバッファローカル変数という奴ですが、Emacs Lispがエディタ用に作られているが故に導入された、まさにEmacs Lisp特有の機能と言えましょう(本当は、似たような拡張はこの種の処理系にはちょくちょく見られる気もしますが)。 これらバッファローカル変数と、letなどによる束縛と、さらにset-bufferによるバッファ切り替えが絡もうものなら、それはもう混乱させられること間違いなし。
まあ、こんなところまで踏み込む必要のある人は少ないと思いますが、自前のMajor Modeとか作る人は学んでおいて損はない部分なので、将来的に山本氏のドキュメントでも、その辺充実してくるといいですね。
なんていいつつ、実は上に書いたようなバッファローカル変数とlet, set-bufferの振る舞いについても、Emacs Lisp Reference Manualにしっかり書いてあったりします。かなりトリッキーな振る舞いになっちゃうんですが、さてどうなるのか、興味のある人はマニュアル読んでみてください。思わず「うーん、なるほどShallow Binding……」とかなんとか呟いてしまうことでしょう。:-)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー
マニュアルに書いてあることも。 (スコア:1)
逆に私は Emacs Lisp しか知らないので、へええ普通の Lisp って違うんだ、と参考になりました。
「正規表現」に関しては、Perl との比
Re:マニュアルに書いてあることも。 (スコア:2, 参考になる)
タレコミ文に「ほかのLisp処理系と比べてEmacs Lispが異なる点」なんて書いてあったんで、ここにはバッファローカル変数がどうとか、そんな名前空間(?)とスコープの話が書いてあるかと思って読んだら、ちょっと拍子抜けしちゃいました。
ま、確かにEmacs Lispの(symbol-value SYMBOL)と(symbol-function SYMBOL)が独立しているってのも、Schemeなどと比べれば特徴と言えるのかもしれませんが、Emacs Lispならではの混乱させられる変数の話と言って私が真っ先に思い出したのは、make-variable-buffer-localとかmake-local-variableとかで指定される変数の振る舞いについてでした。いわゆるバッファローカル変数という奴ですが、Emacs Lispがエディタ用に作られているが故に導入された、まさにEmacs Lisp特有の機能と言えましょう(本当は、似たような拡張はこの種の処理系にはちょくちょく見られる気もしますが)。 これらバッファローカル変数と、letなどによる束縛と、さらにset-bufferによるバッファ切り替えが絡もうものなら、それはもう混乱させられること間違いなし。
まあ、こんなところまで踏み込む必要のある人は少ないと思いますが、自前のMajor Modeとか作る人は学んでおいて損はない部分なので、将来的に山本氏のドキュメントでも、その辺充実してくるといいですね。
なんていいつつ、実は上に書いたようなバッファローカル変数とlet, set-bufferの振る舞いについても、Emacs Lisp Reference Manualにしっかり書いてあったりします。かなりトリッキーな振る舞いになっちゃうんですが、さてどうなるのか、興味のある人はマニュアル読んでみてください。思わず「うーん、なるほどShallow Binding……」とかなんとか呟いてしまうことでしょう。:-)