X



【熱く】お前のEmacsにはまった理由【語れ】

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。
垢版 |
NGNG
きっかけや理由を教えて下さい。
0371名無しさん@お腹いっぱい。
垢版 |
05/02/12 13:47:20
>>361
> 別に有利じゃないよ。lexical scope の言語で dynamic binding を使いたい
> ならfluid-let みたいなマクロを用意しとけばいいだけだし。

う〜んと、相互に実現可能ってのはいいとして、どうして dynamic binding を使いたくなるのかって話。

代表的なのは、ローカル変数との絡みかな。各種 coding-system とか、 fill-column とか。
こういう変数を使う関数は、基本的にバッファごとに決まった値しか使わない。
でも、たまには違う値を使ってほしいこともある。

そんな関数は、 ELisp だと、単に変数を読みに行くだけでいい。
一時的に違う値を使うときは、束縛しとけばいいからね。
こういうやりかたは、 dynamic binding じゃないとできないでしょ。


> 現在では byte-opt.el にもあるよ
> うにすでに足枷でしかないんだけど

「足枷」なのは、 byte-opt.el の目的、最適化に対してでしょ。
基本的に、静的なものは効率と安全性を、動的なものは柔軟性を提供する。
どっちがいいかなんて用途次第。

特に Emacs は、効率よりも柔軟性を重視した環境だよね。
関数でできることはマクロにしないとか、 defsubst の多用も非推奨とか。
だから ELisp には、 dynamic binding がふさわしいと思う。
0372名無しさん@お腹いっぱい。
垢版 |
05/02/12 14:15:26
>>371
> 代表的なのは、ローカル変数との絡みかな。各種 coding-system とか、 fill-column とか。
> こういう変数を使う関数は、基本的にバッファごとに決まった値しか使わない。
> でも、たまには違う値を使ってほしいこともある。

このへんをバッファローカル変数として実現したのは秀逸だと思う。
Cレベルのままにオブジェクトのプロパティなんかになってると
unwind-protectでわざわざ復帰するコードを書かないといけない。
それがローカル変数とすることでletで済む。
この感覚がdynamic bindingとマッチしたとは俺も思う。

まあfluid-letでもいいしプロパティのままでも適当にマクロ作ればいいけど、
冴えたやり方って感じしないよね。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況