LISPって実際どうなの... [無断転載禁止]©2ch.net (112レス)
LISPって実際どうなの... [無断転載禁止]©2ch.net http://mevius.5ch.net/test/read.cgi/tech/1451131702/
上
下
前次
1-
新
通常表示
512バイト分割
レス栞
抽出解除
必死チェッカー(本家)
(べ)
自ID
レス栞
あぼーん
104: デフォルトの名無しさん [sage] 2021/09/10(金) 16:13:07.64 ID:y2IogSqT --- test-global-variable.el --- ;;; -*- lexical-binding: t; -*- (defvar foo "foo") (defun print-foo () (print foo)) (let ((foo "FOO")) (print-foo)) (print-foo) (setq bar "bar") (defun print-bar () (print bar)) (let ((bar "BAR")) (print-bar)) (print-bar) -------------------------------- 続く http://mevius.5ch.net/test/read.cgi/tech/1451131702/104
105: デフォルトの名無しさん [sage] 2021/09/10(金) 16:14:14.79 ID:y2IogSqT -*- lexical-binding: t; -*-の有無で静的束縛を有効無効に出来るけど、 ↓有りの場合 $ emacs --script test-global-variable.el "FOO" "foo" "bar" "bar" ↓無しの場合 $ emacs --script test-global-variable.el "FOO" "foo" "BAR" "bar" 1つ嘘ついたか…動的束縛の場合は、setqで作ったグローバル変数もスペシャル変数になるようだ しかし、スペシャル変数のletで束縛する挙動は静的動的束縛に関係無く同じ挙動だ それが言いたかっただけ http://mevius.5ch.net/test/read.cgi/tech/1451131702/105
106: デフォルトの名無しさん [sage] 2021/09/10(金) 16:22:31.87 ID:y2IogSqT >>103 バッファローカル変数は、他の言語で言うインスタンス変数と役割は同じだな 例えば、buffer-file-nameはバッファローカル変数で、バッファ毎に違う値になるけど、 本来ならばbuffer.file-nameのように、作成したインスタンス変数内(この例ではbuffer)に有るべきだけど、 Emacsはオブジェクト指向を採用しなかったので、グローバル変数をバッファー毎に違う値にする為に、苦肉の策と言えなくもない LispでもCLOSのようなオブジェクト指向を全面的に採用していれば、バッファローカル変数の仕組みは必要無いものだった http://mevius.5ch.net/test/read.cgi/tech/1451131702/106
107: デフォルトの名無しさん [sage] 2021/09/10(金) 16:29:15.85 ID:y2IogSqT CLOSだと(file-name buffer)で済む所を、elispだと (with-current-buffer buffer buffer-file-name) と書く必要があって、CLOSの方がスマートだと思う 他にもelispのadviceも、CLOSのdefmethodの:before :afterを使えば似たような事ができるだろう(完全に同じじゃないけど) http://mevius.5ch.net/test/read.cgi/tech/1451131702/107
メモ帳
(0/65535文字)
上
下
前次
1-
新
書
関
写
板
覧
索
設
栞
歴
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.468s*