Emacs Part 52

■ このスレッドは過去ログ倉庫に格納されています
2020/03/25(水) 17:45:02.71
GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/

EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/

前スレ
Emacs Part 51
https://mevius.2ch.net/test/read.cgi/unix/1514601894/
Emacs Part 50
https://mevius.2ch.net/test/read.cgi/unix/1482097785/
2020/08/31(月) 20:49:51.71
>>232
関数がスペシャルフォームの一部というのは良い感じか
2020/08/31(月) 21:22:21.88
例えば def-special-form ってのがあったとする
quote っぽいスペシャルフォーム my-quote が

(def-special-form my-quote (arg) arg)

みたいに定義できるとして
car っぽい関数 my-car なら cdr 部無視すればこんな感じで書ける

(def-special-form my-car (car &rest cdr) (eval car))

これは、関数がスペシャルフォームの一部である、という一例と言えなくもない
2020/08/31(月) 23:02:23.51
>>233
よくない感じ。スペシャルフォームはスペシャルフォームは関数じゃないというlispの文脈でつかわれるものだから。対して関数はlispじゃない文脈でつかえるから。
2020/08/31(月) 23:25:27.78
Lispの関数の話をしていたのにソース言語の関数にすりかえですか
困ったらこうくるだろうと予想してた通りだね
「俺はLispの話はしていない」ってご飯論法の仲間だよな
2020/08/31(月) 23:46:35.42
初心者が Lisp の実装を勉強する場合、実装言語の関数と Lisp の関数を混同して矛盾、理解がおかしくなることは良くある。
メタ言語と対象言語の概念は区別せんとね。
2020/09/01(火) 00:01:04.37
>>235
まあこの世に同じ物なんてないんだけどね
コンテキストは大抵違う
2020/09/01(火) 06:20:47.45
そもそも Info の Elisp の 13.1 What Is a Function? に

> Certain function-like objects, called “special forms” and “macros”,
>also accept arguments to carry out computations. However, as explained
>below, these are not considered functions in Emacs Lisp.

スペシャルフォームは関数じゃないと明言されてるし

>Here are important terms for functions and function-like objects:

>“primitive”
> A function which is callable from Lisp but is actually written in
> C. Primitives are also called “built-in functions”, or “subrs”.
> Examples include functions like ‘car’ and ‘append’. In addition,
> all special forms (see below) are also considered primitives.

ビルトイン関数やスペシャルフォームのような C で書かれたものには
primitive という総称がちゃんとある

Info すら見ないで Emacs Lisp を語らないで欲しい
2020/09/01(火) 09:00:09.90
「info を読もう」か良いね。
これにて終了。
2020/09/01(火) 09:24:36.89
>>238
うん。そこをビシッとついてギャフンというような議論がみたい。
スペシャルフォームは関数だという主張はelispのあるべき姿というコンテキストなので、現在のelispから離れていても問題ないんだけど、主張してる方も反論してる方もさっぱり分かってない。なおかつもとのbackquote のはなしとも全然関係ない方向。
2020/09/01(火) 09:28:15.63
べつに関数そのものだなんて読み方は誰もしないと思うよ
なぜならbackquoteとつながってる話だから
コンテキストを意識しないとあかんよチミ
2020/09/01(火) 17:31:23.34
関数とスペシャルフォームの違いという定義すら知らない「恥ずかしい人」から
Lispの関数と処理系記述言語で記述した関数を混同してごまかそうとする「恥知らず」を経て
俯瞰者視点を装って当事者じゃないふりでごまかそうとする「厚顔無恥」へランクアップ
2020/09/01(火) 17:40:40.55
ギャフン!
2020/09/01(火) 18:45:35.77
へっ?
2020/09/01(火) 20:29:29.79
“ スペシャルフォームは関数の一種だ”
このフレーズを正当化しようとし続ける姿に涙が🤣
2020/09/02(水) 00:10:06.18
>>243
その、関数とスペシャルフォームの違い、を定義してみてよ
2020/09/02(水) 01:53:24.89
定義っていうか、参考になるページを誰かが貼っておわりみたいな話題じゃないの?
2020/09/02(水) 05:33:37.50
上で Emacs の info にあるって言ってたろう。
2020/09/02(水) 09:07:02.15
emacs を起動して
C-h i と押すと Info が起動する

* Elisp: (elisp). The Emacs Lisp Reference Manual.

という行に移動して ENTER
m を押して、ミニバッファに functions と入力して ENTER
m を押して what と入力して ENTER
これで

13.1 What Is a Function?

が表示されるはず
Info の使い方は ? を押すと表示されるぞ
2020/09/02(水) 09:10:26.34
ところで#129315って何入れたかったの?
2020/09/02(水) 10:23:09.34
https://lets-emoji.com/rolling-on-the-floor-laughing-emoji/
2020/09/02(水) 11:08:43.19
>>250
やさしい
2020/09/02(水) 11:38:25.17
この話の締めに昔話などを

以前 RAM という雑誌があって Lisp の解説連載があってな
ある号に Lisp インタプリタのソースが全部掲載された
記述言語はインテルの8080のアセンブラ
8080のアセンブラには関数なんて気の利いたものはなかった
だから(Lispの)関数やスペシャルフォームはサブルーチンとして実装された
インタプリタ起動後に desubr かなにかでシンボルにアドレスを対応させた気がする

当時は雑誌に掲載されたプログラムを手入力して実行したものじゃった
40年ほど前の話かの
2020/09/02(水) 12:09:56.65
は?関数とサブルーチンが同じとかニワカもいいところだな
やれやれ
2020/09/02(水) 12:30:39.88
シメられて締めって頑張るのうw
2020/09/02(水) 12:36:51.70
分かってない爺がマウント取りたくて必死なのだ。
2020/09/02(水) 13:04:47.35
終わらせようってのになんで続けたがるのか
はっきり言えるのは
>>254
>だから(Lispの)関数やスペシャルフォームはサブルーチンとして実装された
に対して
>>255
>は?関数とサブルーチンが同じとかニワカもいいところだな
という返しは意味を理解できなかったということ

「愚かな厚顔無恥」に昇格だな
2020/09/02(水) 18:06:32.18
え、おわらないみたいだから、おいらも昔話(ぽいの)。
LISP 1.5 Programmer's Manual(アマゾンでかえるよ)でもうspecial formってでてくるのね。んでfunctionじゃないぜ、と。でもformとのちがいはなんやねんてのはかいてなくて(たぶんみつけられなかっただけ)、appendixのfunctionsのリストにはquoteとかのってる。
2020/09/02(水) 18:24:42.05
「関数をサブルーチンとして実装した」という記述を
「関数はサブルーチンだ」という主張だと読んだ愚者って話だろ
Emacs Lisp の primitive も symbol-function すりゃ #<subr >が返るし
これで終わっとけば Emacs Lisp との整合性も保ったままだったよな
なんでまた整合性が無くなりそうなEmacsに関係ない話を持ち出すかな
もう終わりでいいよ
2020/09/03(木) 21:42:39.64
dired-do-shell-commandでshellコマンドのfor i in *; do $command ; doneをよくやる。
 *はdiredでマークしたファイル
 $commandはミニバッファで入力するコマンド
 *の代わりに?を使わないのは?をスペースで囲まなければならず?/file1などができないから。

んでこれをいちいち入力するのが面倒くさくて↓みたいなマクロ組んだけど、
(local-set-key (kbd "C-!") (kbd "!for SPC i SPC in SPC * SPC ; SPC do SPC SPC done M-b C-b"))

実行するとミニバッファ入力ができず終了してしまう。
C-x ESC ESCでなにが起きたか確認すると↓のようにやはりミニバッファ入力が即座に終わっていただけなのが確認できた。
(dired-do-shell-command "for i in * ; do done" nil (quote ("for i in * ; do done")))

ミニバッファ入力を終了させないでおきたいけど方法が見つからない。
私がelispのフロー制御を分かってないのが悪いんですけどね。
どなたかヒントだけでも教えてもらえませんか?
2020/09/04(金) 07:46:36.58
>>261
自力救済できたわ・・
(local-set-key (kbd "C-!")
  (kbd "!for SPC i SPC in SPC * SPC ; SPC do SPC \"$i\" SPC ; SPC done C-u 11 C-b C-u C-x q RET"))
2020/09/04(金) 09:10:47.95
解決したなら良かったけど
お手軽なのはキーボードマクロを試して、うまくいけば保存する方法
(emacs)Basic Keyboard Macro
(emacs)Save Keyboard Macro
2020/09/04(金) 10:34:09.35
(emacs)Basic Keyboard Macro が Info のノードだとわかるだろうか

M-: (info "(emacs)Basic Keyboard Macro") ENTER

で見られるのはわかるだろうか
Info の Emacs の Keyboard Macros の……と説明しなくて大丈夫だろうか
と考えてしまう俺がいる
2020/09/04(金) 15:50:54.59
丁寧に説明頂いてありがとうございます。
M-x eval-expressionがM-:なのは便利ですね知らなかった。
(emacs)Keyboard Macrosは一通り読みました。
ほぼ知ってたことを確認できたのでいい収穫でした。

ただ、(emacs)Executing Macros with Variationsのrecursive editがここまで柔軟にminibuffer利用マクロとかみ合うとは想像できなかった。
白状すると読み飛ばしていたんですねえ()

minibuffer入力中にmacro定義を終えてもマクロ実行直後にminibuffer入力中にならない、という仕様は本当に思いつかなかった。
なんでしょうね?elisp追ったり調べたりしてもさっぱりでした。
macro実行すべてに関わってそうなbuiltin functionのexecute-kbd-macroを見てもインタラクションに関する記述がない。
ないからこそ非インタラクテイブなんでしょうかね。
Cは追う気が起きなかった。
このもやもやが将来にぶつかる壁になりませんように。
2020/09/04(金) 16:27:12.20
>>265
解決はしたけどecho areaが表示されなくて地味に・・・辛いです。
*Shell Command Output*バッファを伴う量のstdoutがあればecho areaが使われないので問題ないのですが、
for i in * ; do rm -v "$i"/810.txt ; done みたいな少量のstdoutしかない時がつらいってばよ。。。
2020/09/04(金) 17:05:23.83
*Shell Command Output* はあるから自分で見る
2020/09/04(金) 17:16:25.01
C-h lでecho area履歴を見れなくはないんですけどね、毎回履歴起こすとかそういう煩雑なのが許せないし葬りたい
2020/09/04(金) 17:17:49.69
Ch lじゃなくてCh eだった
2020/09/05(土) 00:21:15.83
だめだemacsにはecho areaを再表示するとかないんですねー
elispハックでつくるれるけどなんか抵抗あるなあ
つーわけでこんなワークアラウンドで自力救済
(kbd)使うなってなwこまけえこたあいいんだよ

(add-hook 'dired-after-readin-hook
(lambda () (local-set-key (kbd "C-!")
'(lambda () (interactive)
(execute-kbd-macro (kbd "!for SPC i SPC in SPC * SPC ; SPC do SPC SPC \"$i\" SPC ; SPC done C-u 12 C-b C-u C-x q"))
(switch-to-buffer "*Shell Command Output*" nil (quote force-same-window))))))
(add-hook 'dired-after-readin-hook
(lambda () (local-set-key (kbd "C-&")
(kbd "&for SPC i SPC in SPC * SPC ; SPC do SPC SPC \"$i\" SPC ; SPC done C-u 12 C-b C-u C-x q"))))
2020/09/05(土) 00:24:08.51
いい忘れたけどdired-do-async-shell-commandはswitch-to-bufferしなくても似たようなことやってくれるんですね
だからそっちではやってない
272名無しさん@お腹いっぱい。
垢版 |
2020/09/05(土) 01:09:54.72
(display-buffer shell-command-buffer-name) されるのは出力が複数行の場合なので
done のあとに ; echo を置くってのはどう

"!for i in * ; do ; done; echo\C-u2\M-b\C-u3\C-b\C-u\C-xq"
2020/09/05(土) 06:29:22.96
それな
バッファが表示されるように出力行数を増やせばいいだけだろうに
2020/09/05(土) 17:38:37.63
複数行かは(名前忘れたけど)例のvariable値に依存するからやめときますわ

>>273よ、
要件とproscons無視していいだけだろうなんて想像で解決した気分になられても何も得しないんだけどなんでそれでいいと思えたのかな?
おまえからクソリプみたいに噛みついたんだからせめてこの質問には逃げずにちゃんと答えろよ
まあおまえが誹謗中傷しかできないレス乞食とかになりたいとしても止める義理もねえけど
2020/09/05(土) 21:30:35.77
彼なら巣に帰ったよ
2020/09/05(土) 21:56:33.22
>>274
お前の文章が異常で誤読させまくりなのは理解してるか
例の variable 値って何だよ?
どうせ >>261 でいう $command なんだろうが理解しがたい書き方ばかりでうんざりする
#そもそも>>261 の冒頭からひどい。ミニバッファに入力するのは for 以下だろうに
#入力するのは $command とか書いてある。理解させる気がないとしか思えん。

いいか? 出力行数が多ければバッファ表示されるんだろ
つまり出力行数を増やすだけでいいんだろ
echo を必要なだけ追加して行数を増やすだけだな

極端なことを言えばフレームに表示できる行数より長ければ
出力バッファを表示するしかないのは理解できるか
実際はデフォルトだとフレームの25%の行数が閾値だったと思うが大きければ構わん
必要な個数の改行をシェルの出力に追加するだけで目的は達成できる
多い分には構わんから個数の判定も不要

で?
2020/09/05(土) 22:23:34.48
生憎おまえみたいな狂犬にprosconsを丁寧に教えて議論してやるなんて一言も言っとらんよ。

まず前提として、emacsなんて改造前提のソフトでは人の数だけconfigがある。
ある改造があって、それにprosconsがあって、人によって採用不採用がある。
それすらわからない故に「だけ」などと漏らした無礼モンがおまえ。

結局質問への答えも出せなかったな。
瑣末主義や誹謗中傷がお好きならどうぞご自由に。
失望はせんがやっぱりそういう奴なのね。
2020/09/05(土) 22:46:13.47
はいはい、自分は絶対な人なわけね
一昨日質問してからずっと無視されてた理由を考えてみるといいよ
昨日の3件のレスを後悔してる
俺以外の最初のレスに賛同しただけでからんでくるようなタイプだったとはな
世の中にはいろんな人がいるもんだ
2020/09/05(土) 23:05:57.60
この人はなんで「だけ」を度重ねて誤用したがるの・・・
2020/09/05(土) 23:32:53.45
誤用でなく実際「だけ」だからでは
むしろ「質問者」が過敏過ぎてヤバい
暴言ばかりで見るに耐えん
2020/09/05(土) 23:45:56.08
どうでもいい
2020/09/05(土) 23:51:22.96
嘘つきと喋る口を私は持っていない
2020/09/05(土) 23:53:53.98
どうでもいい
2020/09/06(日) 00:16:56.87
誰がどこででも自演できるからどうでもいいよ
2020/09/06(日) 00:34:45.73
どうでもいい
2020/09/06(日) 01:58:25.38
壊れたおもちゃみたいなおじさんが出てきた
287名無しさん@お腹いっぱい。
垢版 |
2020/09/06(日) 02:13:27.78
スペシャルフォームおじ -> Ahoo知恵遅れおじ -> 壊れたおもちゃおじ
次のイベはなにするよ?
2020/09/06(日) 08:35:47.14
スクリプトで埋め立てて恥曝しの記録をかき消すとかかな
2020/09/06(日) 08:37:54.55
おい、嵐方教えるなって
2020/09/06(日) 08:49:35.39
ごめんごめん
でもどうせそんな勇気無いって
2020/09/06(日) 09:50:11.05
次スレはワッチョイありでたてよう
2020/09/06(日) 09:57:54.66
残念ながらこの板VIPQ設定されてないから無理だよ
運営が過疎板にコストのかかる対策をしてくれる可能性も低いだろうね
2020/09/06(日) 10:04:10.74
聞くかどうかに関係なくコマンドは入れてたてよう
2020/09/06(日) 10:09:43.160
それがいいね
なお名前欄に「!slip:vvvvv」と書いて投稿すれば自分のレスにワッチョイ付ける事は可能みたい
2020/09/06(日) 14:21:59.43
次スレまで1年はかかりそうですね...
2020/09/06(日) 14:26:36.70
イベを盛り上げて消費するしかないのか
2020/09/06(日) 14:48:38.39
ローカルルールで自主的に付ける?
2020/09/06(日) 14:54:08.75
次ちゃんと立ててくれるならもうスクリプトで潰してくれた方がマシなんじゃ
2020/09/06(日) 15:02:16.05
次スレでコマンドが効く保証はないし結局ローカルルールでしょ
2020/09/06(日) 15:25:56.60
定着するまで俺らが自治すればいい
2020/09/06(日) 15:36:38.68
あなたの自演が疑われている
2020/09/06(日) 16:56:44.96
もう素直にスクリプトでも何でもすればいいのにね
2020/09/06(日) 16:56:47.52
もう素直にスクリプトでも何でもすればいいのにね
2020/09/06(日) 17:24:46.17
板を変えたら? UNIXへのこだわりがなければ
2020/09/06(日) 17:48:34.31
放置すりゃいいだけだと思うが
2020/09/07(月) 01:17:04.50
ローカルルールどうするの?
2020/09/07(月) 03:21:34.40
こだわりというかunixライクありきのソフトだからどうよってのはある
2020/09/08(火) 01:38:01.68
第3者だけど荒らしより煽ってるほうが完全に悪いなこりゃ
反省しろよ
2020/09/08(火) 05:33:02.25
答え倦ねて勝手にふて腐れるのは違うでしょ
310名無しさん@お腹いっぱい。
垢版 |
2020/09/08(火) 22:05:31.93
emacsユーザがlisp語るって虚しくならないの?
2020/09/08(火) 22:28:55.64
どっちのlisp?
2020/09/09(水) 00:36:11.14
Lisp固有でもないどころかそれ以前の話だろ
313名無しさん@お腹いっぱい。
垢版 |
2020/09/09(水) 03:14:30.32
随分活気づいてるけど27.1が出たせいかな?
2020/09/09(水) 06:23:26.17
ちげぇーよ
2020/09/09(水) 21:23:58.90
ローカルルール施行はよ
2020/09/09(水) 21:49:47.40
2020年代のEmacs入門 | Emacs JP
https://emacs-jp.github.io/tips/emacs-in-2020

leafなんてここで話題出たことあんの?
今やいくつも小さいemacs村が点在してるって感じなのかね
2020/09/10(木) 01:40:38.85
みんなもう歳だから新要素出されてもついていけないでしょ
2020/09/10(木) 02:32:12.37
こどもおじさん.......
2020/09/10(木) 07:38:04.660
>>315
暗いと不平を言うよりも
進んで明かりをつけましょう
2020/09/10(木) 07:51:01.03
光あれ
2020/09/10(木) 08:25:14.70
>>316
自作パッケージの紹介なら自分のブログとかでやればいいのにね
2020/09/10(木) 10:19:42.03
尊師
https://i.imgur.com/i8zQ3b6.jpg
2020/09/10(木) 16:39:49.37
こいつら何がおもしろいの?
煽りカスが粘着か自演してるだけ?
2020/09/10(木) 17:00:21.86
自演と感じるなら構わなければ良いだけでは
2020/09/10(木) 17:10:18.27
普通の話や質問に邪魔なんだが
しかも寒いし
2020/09/10(木) 17:30:03.18
偉そうに文句言うだけで何も対策しなけりゃ「どうぞ荒らして下さい」と言ってるのと何も変わらないじゃない
2020/09/10(木) 17:40:08.48
なんだマジで自演だったのか
ここもコイツももうダメっぽいな
2020/09/10(木) 17:42:22.29
だいぶ前から有意義な話は出てきてないでしょ
どっちにしても
2020/09/10(木) 17:47:00.95
324より前の奴等は知らんけど、「邪魔だから荒らすな。俺は偉いから何もしないし邪魔者には好き勝手構うがな」では
「お前バカなの?」と荒らしにすら見下されるのは不可避
2020/09/10(木) 18:00:22.18
俺が一番えらい
2020/09/10(木) 18:03:04.74
>>328
>>329
毎回寒いことばっか言いやがって何も隠せてないじゃねーか
マジでくっだらねえ
もう死ぬまでやってろよ
2020/09/10(木) 18:06:27.87
>>331
329だけど俺は328じゃねえよ
それより不思議な事に、お前がそうやって自分の意に反する発言に構ってる間は荒らしがピタッと止まる
何でだろうねえ〜
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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