- 1 名前:デフォルトの名無しさん [2007/10/09(火) 05:39:53 ]
- Emacs Lisp の専用スレ。
少数派による互助を中心に、初心者の相談も気が向けば受け付けます。 単なる Emacs ユーザーは別板の Emacs 関連スレにどうぞ。 過去スレ Emacs Lisp pc2.2ch.net/test/read.cgi/tech/1004551074/ Emacs Lisp 2 pc11.2ch.net/test/read.cgi/tech/1068467385/ 関連スレ Emacs part 22 pc11.2ch.net/test/read.cgi/unix/1180828013/ 【叩かれて】Emacs Lisp道場【強くなれ】 pc11.2ch.net/test/read.cgi/unix/1063880951/ Lisp Scheme Part18 pc11.2ch.net/test/read.cgi/tech/1186922295/
- 152 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:06:59 ]
- est
- 153 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:08:20 ]
- >>151
君の頭が腐っているというのを疑った方がいいよ
- 154 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:26:35 ]
- >>151
プログラマブル正規表現だっけ? よくわからん
- 155 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 01:11:40 ]
- プログラマブルなのが使えるのは、インタラクティブに実行した場合だけでしょ。
NEWS *** When used interactively, the commands `query-replace-regexp' and `replace-regexp' allow \,expr to be used in a replacement string, ちなみに replace-regexp を実行したら次のように展開された(repeat-complex-command)。 (replace-regexp "\\(.+\\)" (quote (replace-eval-replacement replace-quote (my-func (match-string 1)))) nil (if (and transient-mark-mode mark-active) (region-beginning)) (if (and transient-mark-mode mark-active) (region-end))) で、replace-regexp をプログラムの中で使うのはbadなので、 (while (re-search-forward "\\(.+\\)" nil t) (replace-match (my-func "\\1") nil nil))
- 156 名前:151 mailto:sage [2009/02/28(土) 01:47:45 ]
- >> 154
そんな名前があるとは知らなんだ。 google先生は記号の検索には弱いしね・・・ >> 155 サンクス。インタラクティブ専用だったんだ。 よく使う置換の組を「お気に入り」みたいに登録して一発で呼び出せるlispを作ってたんだけど、 仕組み上、正規表現は自由に指定可能だから関数決めうち実行ができなくて。 プログラマブル正規表現は非対応とあきらめるしかないか。
- 157 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 03:23:53 ]
- >> と数字の間は開けないで
- 158 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:18:39 ]
- 起動時にインタラクティブな関数を自動的に呼び出すにはどうしたらいい?
2画面で起動して、片方にSchemeインタプリタを起動したい 2画面の分割は、.emacsに(split-window-vertically)を追記したらうまくいったが M-x run-schemeが呼び出せないんだ
- 159 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:50:34 ]
- (run-scheme) ではだめなのけ?
- 160 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:14:03 ]
- だめぽ。そうするとこんなわけわからんエラーが出る
Wrong number of arguments: #[(cmd) "\304\305!\204^Y^@\306^H!^Y\307\310\311 @\312 A%q\210\313 \210)^H^R\305^S\314\305\ !\207" [cmd cmdlist scheme-program-name scheme-buffer comint-check-proc "*scheme*" scheme-args-to-list apply make-comint "s\ cheme" nil inferior-scheme-mode pop-to-buffer] 6 ("/usr/share/emacs/21.2/lisp/cmuscheme.elc" . 6428) (list (if current-pref\ ix-arg (read-string "Run Scheme: " scheme-program-name) scheme-program-name))], 0
- 161 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:18:46 ]
- describe-function(C-h f)ぐらい覚えような
- 162 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:29:14 ]
- >>160
(run-scheme scheme-program-name)
- 163 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 09:48:57 ]
- (call-interactively 'run-scheme)
- 164 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:28:41 ]
- >>161-163
d牛d牛トーン・・カツ! すばらしく快適な環境になった
- 165 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:07:00 ]
- >>164
(call-interactively 'run-scheme) これしらんかった、すげぇ勉強になった、ありがとう いままでintaractive関数の機動失敗時はいつも.elの中調べてた。
- 166 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 03:01:42 ]
- elispで呼び出し元の関数名を調べるにはどうしたらよいのでしょう?
- 167 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 15:59:27 ]
- Meadow3(Emacs22)の画像インライン展開で質問です。
ヘルプ見る限り、create-imageはファイルからだけじゃなくデータも直接読んで 画像を作ってくれるみたいなんですが、うまくいきません。 insert-file-contents-literallyでテンポラリバッファに読み込んで渡してるんですが なにかやり方に問題があるのでしょうか? (insert-image (create-image "~/hoge.gif")) だと画像が出ますが、 (insert-image (create-image (with-temp-buffer (insert-file-contents-literally "~/hoge.gif") (buffer-string)) 'gif)) だとトウフが出てしまいます。
- 168 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 16:33:41 ]
- >>167
set-buffer-multibyte -> nil DATA-P -> t でどうです。
- 169 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 16:43:04 ]
- >>168
素早い指摘陳謝です。 無事表示されるようになりました。 ヘルプはちゃんと読まないとだめですね。 unibyteとかmultibyteはまだよく理解してないので勉強します。 ありがとうございました。
- 170 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 13:49:09 ]
- 自分でメジャーモードとか作ろうと思った時に
Infoとか書籍以外にこれは参考にすべきといったパッケージってなにがありますか? 色々眺めてるんですがみんな結構やり方が違っててよくわからなくなってきました。
- 171 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 15:03:54 ]
- >>170
Infoによるとtext-modeが最もシンプルだと言うから、text-modeがいいと思うよ。 Emacs22からdefine-derived-modeが使われててより簡単に作れるようになってる。 たった1行でも実行可能なのを今やってみて初めて知った。 (define-derived-mode hoge-mode nil "Hoge") あとは、キーマップを定義するだけ。 ま、そういうわけでEmacs21と22のtext-modeが参考になる。
- 172 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 15:55:22 ]
- >>171
回答ありがとうございます。 見てみましたが雛形に丁度良い感じですね。 text-modeを足掛りにして頑張ってみようと思います。 標準配布されてるパッケージのコードは 基本的に正しいやり方(?)で書かれていると思ってよいんですよね? #もっとスマートな方法があるのに変なやり方で無駄に処理を増やしてるとか #メモリを無駄に使ってしまう書き方だったりとか....
- 173 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 17:33:24 ]
- >>172
必要なことを必要なだけ書けばいいんですよ。 メジャーモードとして機能するためには最低限何が必要か。 そこに、自分が欲しいものを追加していくだけです。 またそのために、例えばsyntax-tableを独自に定義した方がいいならそうするし。 defcustomなんかはdefvarで済ますこともできるけど、ひとが作ったパッケージを 利用するときはdefcustomの方が分かりやすいと思うので、そう考えるならそうするしとか。 コードを書く上では、自分でこれでいいと思うコードを書けばいいんです。 あとは、慣習に従うと。
- 174 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 18:51:55 ]
- コロン付きのキーワードシンボルってあんまり使われてない気がするんですが、
なにか歴史的理由とかバージョン間互換性とかの理由があったりするんでしょうか? alistのcarとかオプショナルな引数が沢山ある関数での&restで引数とる時のラベリングとか 値を取らないことを明示的に示してて便利だと思うんですけど(elispモードで色分けもされるし)、 色々ソース眺めた感じ、使ってるパッケージはガンガン使ってるんですが、 まったく使ってないところはcustomとかtext-property等ぐらいでしか使ってません。
- 175 名前:デフォルトの名無しさん [2009/04/15(水) 16:51:29 ]
- ttp://www.bookshelf.jp/texi/elisp-manual/21-2-8/jp/elisp_11.html#SEC138
- 176 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 18:05:50 ]
- よもや返事がくるとは思わなかったw
値が設定出来無い=ラベルとか専用ってことがコンパイラレベルで保証されてて よさげだと思うんですが・・・ とりあえずassocのcarはシンボル、plistと関数のrestはキーワードシンボルで 書き進めちゃってるんですが、いいんだろか・・・
- 177 名前:デフォルトの名無しさん [2009/04/15(水) 20:11:53 ]
- コードリードしてるとき、コメントアウトうざいなーと思うことが多々あったので、
こんなコード書いてみました。スマートじゃない部分あるのでまだ改良しますが、 方向性として他に方法ないかアドバイスお願いします。
- 178 名前:デフォルトの名無しさん [2009/04/15(水) 20:13:51 ]
- 改行多すぎと怒られたのでbase64-encode-region
KGRlZnVuIGhpZGUtY29tbWVudC1mYWNlICgpIAogICJmYWNlIGNvbW1lbnQgaGlkZSIgCgkoaW50 ZXJhY3RpdmUpCiAgIDs7JygxIDIgMyAuLi4uIGNvbW1lbnQgZmFjZSBwb2ludCBsaXN0KQoJKHNl dHEgY29tbWVudC13YWxrCgkJCQkobG9vcCBmb3IgeCBmcm9tIDEgdG8gKHBvaW50LW1heCkKCQkJ CQkJCWZvciBsb2ZhY2UgPSAobGlzdCAoZ2V0LXRleHQtcHJvcGVydHkgeCAnZmFjZSkgeCkKCQkJ CQkJCWlmIChvcgoJCQkJCQkJCQkobWVtYmVyICdmb250LWxvY2stY29tbWVudC1kZWxpbWl0ZXIt ZmFjZSBsb2ZhY2UpCgkJCQkJCQkJCShtZW1iZXIgJ2ZvbnQtbG9jay1kb2MtZmFjZSBsb2ZhY2Up CgkJCQkJCQkJCShtZW1iZXIgJ2ZvbnQtbG9jay1jb21tZW50LWZhY2UgbG9mYWNlKQoJCQkJCQkJ CQkpIGNvbGxlY3QgKG50aCAoLSAobGVuZ3RoIGxvZmFjZSkgMSkgbG9mYWNlKSkpCgkoYWRkLXRv LWxpc3QgJ2NvbW1lbnQtd2FsayAnLTEpIDsgYmFkIGNvZGUKCShhZGQtdG8tbGlzdCAnY29tbWVu dC13YWxrICctMiB0KSA7IGJhZCBjb2RlCgogICA7Oycoc3RhcnQgZW5kIHN0YXJ0IGVuZCBzdGFy dCBlbmQgLi4ub3ZlcmxheSByZWdpb24gbGlzdCkKCShzZXRxIGNvbW1lbnQtd2FsawoJCQkJKGxv b3AgZm9yIHJpZ2h0U3RlcCBpbiBjb21tZW50LXdhbGsKCQkJCQkJCWZvciBsZWZ0U3RlcCBpbiAo Y2RyIGNvbW1lbnQtd2FsaykKCQkJCQkJCWlmIChub3QgKGVxICgrIHJpZ2h0U3RlcCAxKSBsZWZ0 U3RlcCkpIGFwcGVuZCAobGlzdCByaWdodFN0ZXAgbGVmdFN0ZXApKSkKCShzZXRxIGNvbW1lbnQt d2FsayAoZGVscSAnLTEgY29tbWVudC13YWxrKSkgOyBiYWQgY29kZQoJKHNldHEgY29tbWVudC13 YWxrIChkZWxxICctMiBjb21tZW50LXdhbGspKTsgYmFkIGNvZGUKCgkoc2V0cSBjb21tZW50LW92 LWxpc3QKCQkJCShsb29wIGZvciBzdGFydCBpbiBjb21tZW50LXdhbGsgYnkgIydjZGRyIAoJCQkJ CQkJZm9yIGVuZCBpbiAoY2RyIGNvbW1lbnQtd2FsaykgYnkgIydjZGRyIGNvbGxlY3QgKG1ha2Ut b3ZlcmxheSAoLSBzdGFydCAxKSBlbmQpKSkKICAgOzsgd2h5IG5lZWQgcmVzPwoJKGxldCAocmVz KQoJCShkb2xpc3QgKG92IGNvbW1lbnQtb3YtbGlzdCByZXMpCgkJCShvdmVybGF5LXB1dCBvdiAn Y2F0ZWdvcnkgJ2hpZGUtY29tbWVudC1mYWNlKQoJCQkJCQkJCQkJCQkJCQkJCQkJCTsJCShvdmVy bGF5LXB1dCBvdiAnY2xlYW51cCB0KQoJCQkob3ZlcmxheS1wdXQgb3YgJ2ludmlzaWJsZSB0KQoJ CQkJCQkJCQkJCQkJCQkJCQkJCTsJCShvdmVybGF5LXB1dCBvdiAnZGlzcGxheSAiIikKCQkJKSkp
- 179 名前:デフォルトの名無しさん [2009/04/15(水) 20:16:39 ]
- 連投ごめんなさい、コード内容は、
コメントのfaceを見て、overlay作成し不可視にするlispです。
- 180 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:29:36 ]
- ろくに読まずに発言するけど、
ループのところってnext-property-changeで検索じゃだめなん?
- 181 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:34:18 ]
- >>175
elisp-manual-21-2.8.tar.gz を見てみたが、 keyword-symbols-constant-flag はすでになかった。
- 182 名前:177 mailto:sage [2009/04/15(水) 20:37:10 ]
- >>180
ありがとございます、それ知らなかったので調べてみたら、 自分がやってることは非効率極まりないことまでわかりました。 ちょっと書き換えてみます。
- 183 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:37:21 ]
- というよりkeyword-symbol自体がそんなに沢山使われてない。
- 184 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:43:06 ]
- >>182
自分は使ったことないけど、 comment-search-forward と backward なんていう もっとよさげな関数があったよ。
- 185 名前:デフォルトの名無しさん [2009/04/16(木) 23:21:38 ]
- >>176
Emacs19 用 Elisp マニュには keyword で始まる名前自体がなくて : に関する記述もなさげだから Emacs20 あたりで追加された新機能だと思われ 古い Emacs との互換性が不要なら使ってもいいんでないかな
- 186 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:03:55 ]
- 自分自身を remove-hook するような hook は邪道でしょうか?
具体的にはバッファの内容を別の形式で別ウィンドウに表示するアプリを作っています。 編集中の内容をリアルタイムに反映させるため post-command-hook で監視を行なおうと思っているのですが、 変換後の表示バッファが消されていた場合、自分自身で remove-hook して後始末をしたいなと・・・
- 187 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:44:34 ]
- 自分自身でremove-hook するって、子bufferの有無をずっと監視するってこと?
別ウィンドウで表示しているbufferのkill-buffer-hookに buffer local で post-command-hookのhookをremove するものを 仕掛けておくって思いついたんだけど、どうかな?
- 188 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:12:30 ]
- >>187
なるほど! どう考えてもその方がスマートですよね。一々 buffer-live-p しなくて済みますし。 ありがとうございます。
- 189 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:48:31 ]
- /bin/shとかだと``でコマンドの実行結果をテキストで得られるけど
同じことをelispでしたい場合どうすれば良い? バッククォートはlispでは別な意味なのでアレだが (print `date`)で"Fri Apr 24 01:47:15 JST 2009"のようなことは出来ないかな
- 190 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:55:51 ]
- >>189ドゾー
(print (shell-command-to-string "date"))
- 191 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 23:42:19 ]
- さんきゅー!
- 192 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:11:19 ]
- buffer中で使った単語をリストアップするlispを書いてます。(想定する用途は、coding中にtypoした単語がないかチェックする)
単語とその出現回数のAssociationListを作って、新規に作ったbufferにinsertするようにしました。 できないのがありまして、 アルファベット順にsortするのが上手くできないです。(出現回数の方も同様にオプションでsortするようにしたいけど、後回しになってます) (sort (mapcar '(lambda (x) (car x)) word-alist) 'string-lessp) とsortしたら、sort対象のcar部分だけでなく、元のリストがsortされて、値がもどってくるにはどうしたらいいのでしょう? (defun my-list-words () (interactive) (save-excursion (goto-char (point-min)) (let (word word-alist cu-word) (while (re-search-forward "[-_a-zA-Z]+" nil t) (setq word (buffer-substring (match-beginning 0) (match-end 0))) (if (assoc word word-alist) (setcdr (assoc word word-alist) (1+ (cdr (assoc word word-alist)))) (setq word-alist (cons (cons word 1) word-alist)))) ;;;この下のS式が、上手く表現できない (setq word-alist (sort (mapcar '(lambda (x) (car x)) word-alist) 'string-lessp)) (pop-to-buffer "*words list*") (erase-buffer) (mapc '(lambda (x) (insert (format "%s\n" x))) word-alist) ))) 他の点でもアドバイスがあれば、お願いします。
- 193 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 15:35:33 ]
- >>192
sort は破壊的関数。元のリストを残して置きたいならリストのコピーを sort する。 でも、この場合には必要ないと思う。 比較関数の例: (lambda (x y) (> x y)) == '> word を取得するには、match-string が使える。 局所変数を使えば、assoc の呼び出しは1回でいい。 push を使ってもいい。
- 194 名前:192 mailto:sage [2009/05/05(火) 17:54:22 ]
- >>193さん、ありがとうござます。
おかげさまで、想定通りに動くようになりました。 比較関数の書き方もわかりました。 pushについては、後ほど調べて、また書き込みます。 直したところ: match-string (setq word (match-string 0)) 局所変数、 (let、、に入れて、(setq current-word (assoc word word-alist)) 比較関数の書き方を直しました。 (sort word-alist '(lambda (x y) (string-lessp (car x) (car y)))) このようになりました。 (defun my-list-words () (interactive) (save-excursion (goto-char (point-min)) (let (word word-alist current-word) (while (re-search-forward "[-_a-zA-Z]+" nil t) (setq word (match-string 0)) (setq current-word (assoc word word-alist)) (if current-word (setcdr current-word (1+ (cdr current-word))) (setq word-alist (cons (cons word 1) word-alist)))) (sort word-alist '(lambda (x y) (string-lessp (car x) (car y)))) (pop-to-buffer "*words list*") (erase-buffer) (mapc '(lambda (x) (insert (format "%s\n" x))) word-alist)) ))
- 195 名前:192 mailto:sage [2009/05/05(火) 18:22:13 ]
- すいません、少し間違えてました。
sortした結果を (setq re-list (sort word-alist '(lambda (x y) (string-lessp (car x) (car y))))) のように受けないといけませんでした。 sort対象のリストは、破壊されてしまうのですね。sortされるように破壊されると思い込んでました。 (setq lst '((banana . 1) (apple . 2) (orange . 1))) (setq r (sort lst '(lambda (x y)(string-lessp (car x) (car y))))) r => ((apple . 2) (banana . 1) (orange . 1)) lst => ((banana . 1) (orange . 1) もう一度、直したものを張っておきます。 (defun my-list-words () (interactive) (save-excursion (goto-char (point-min)) (let (word word-alist current-word) (while (re-search-forward "[-_a-zA-Z]+" nil t) (setq word (match-string 0)) (setq current-word (assoc word word-alist)) (if current-word (setcdr current-word (1+ (cdr current-word))) (setq word-alist (cons (cons word 1) word-alist)))) (setq re-list (sort word-alist '(lambda (x y) (string-lessp (car x) (car y))))) (pop-to-buffer "*words list*") (erase-buffer) (mapc '(lambda (x) (insert (format "%s\n" x))) re-list)) ))
- 196 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 18:52:20 ]
- clの作法に則るとこんなんじゃろか。
ttp://paste.lisp.org/display/79688
- 197 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:17:11 ]
- hash を使って CL なしでやってみたよ。
paste.lisp.org/display/79690
- 198 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:37:33 ]
- あ、hashあるんだ。
>>197の方が圧倒的に速いね。
- 199 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 20:40:33 ]
- hash って emacs lisp の info にあんまり使うなって書いてあった気がするから
なんでも assoc で済まそうって癖がついてしまった。
- 200 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 20:53:17 ]
- >>199
kwsk
- 201 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 03:26:29 ]
- >>199
infoには、10項目以内なら連想リストの方が速いけど、それ以上の場合は ハッシュを使ったほうがいいと書いてあるぞ。
- 202 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 23:02:53 ]
- elispの&optionalって省略されたときnilが設定されるようだが
使い方はこんな感じで良いのでしょうか? (defun iota (count &optional start step) (or start (setq start 0)) (or step (setq step 1)) (loop for n from start to (+ start (* (1- count) step)) by step collect n))
- 203 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 00:02:58 ]
- そんな感じ
省略時にnil以外の値という扱いのときはdocstringに書いておいた方がいいかな
- 204 名前:202 mailto:sage [2009/07/03(金) 00:59:59 ]
- >>203
docstringね ありがとう それとこの場合はこうか (setq start (or start 0)) (setq step (or step 1))
- 205 名前:202 mailto:sage [2009/07/03(金) 01:05:03 ]
- (setq start (or start 0) step (or step 1))
- 206 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 02:58:28 ]
- (eval-when-compile (require 'cl))
(defun* foo (a &optional b (c 5) &key d (e (user-login-name))) (list 'a a 'b b 'c c 'd d 'e e)) (foo 1) (a 1 b nil c 5 d nil e "bar") clだと全部使える。やっぱ、clはいいね。
- 207 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:19:01 ]
- clにformat*ってのがあるといいんだけどなぁ
- 208 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:26:01 ]
- 作れよ
- 209 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 17:39:12 ]
-
emacs-lisp 上での common lisp の関数/マクロ名と ピュアな common lisp の関数/マクロ名との マッピングの在処を知っている方いませんか? 例えば、 defun* → defun (cl*/el → cl) とかです。
- 210 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 17:47:10 ]
- clモジュールのことか?
cl.el を見ればわかるんじゃね? CL と emacs-lisp では根本的に違うところもあるから 必ずしも一対一に対応してるとは限らんが
- 211 名前:デフォルトの名無しさん [2009/08/14(金) 06:09:19 ]
- Emacs Lisp が末尾再帰を最適化していない理由って何ですか?
- 212 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 09:02:49 ]
- みんな末尾再帰を使わないから
- 213 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 09:06:49 ]
- >>212
最適化が成されていないから使う必要がない。 だから末尾再帰を使う人がCLに比べるとかなり少なくなる。 それは最適化していないことの理由ではない。 違いわかるよね?
- 214 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:48:42 ]
- 末尾再帰しててもアドバイス定義したら末尾再帰にならなくなったりするんじゃね?
コンパイル時に最適化してしまうと後で困る。 よく誤解している人がいるけど、 cl や emacs-lisp は関数型言語なんかじゃありませんから!!
- 215 名前:デフォルトの名無しさん [2009/08/14(金) 11:58:15 ]
- じゃあなんなんだよ。
そんなの「吉野屋やすき屋は牛丼なんかじゃありませんから!」並の理屈だぞ。
- 216 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:11:12 ]
- en.wikipedia.org/wiki/Common_Lisp
手続的、関数的、オブジェクト指向の連携をサポートしたマルチパラダイム言語
- 217 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:52:25 ]
- 勝手に末尾再帰されるようなマクロ書けってスタンスじゃね?
マルチパラダイムうんぬんは関係ないかと
- 218 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:27:05 ]
- >>214
emacs-lisp は "ほぼ" 関数型言語。 cl は関数型言語。
- 219 名前:デフォルトの名無しさん [2009/08/14(金) 21:49:36 ]
- 吉野屋やすき屋は牛丼じゃない
- 220 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:20:31 ]
- >>211
実装が面倒くさいから。 ってcompile.elのソースに書いてあったと思ったよ ソースすら読まない馬鹿は本当にしょうがないな
- 221 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:33:36 ]
- ……何にどう書いてあるって?
- 222 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:38:57 ]
- \
\ ∧ニユ/ ̄ヽ \ ( ´∀/) i \.\ _(」つ/とl) . | \ ;::;::\i\ 匚レ| .〈/ ) | \ 。::;;:'\.\ (_,)ー' |_,, -'''"! ^人;:'::;゚:;.\l\ _,,, -''"|_,, -''"| ^^从::;;:。':\.\_,, -''"|_,, -''"| . :| へ ^へ;;::';;:'\l_,, -''" . | 从^ 〜 ^ ^ヘ^人从::;;;:| ,ィ人^. | ^ ^へ^^ 〜 ^.へ' ^':レ^从 へ' | 〜 ^ へ ^^ へ 〜人^ ^ へ〜 〜
- 223 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 15:50:25 ]
- >>220
最近 emacs スレッドにもいる、前頭葉が未発達で可哀想な方ですよね。 わかります。 $ grep -E '\b(tail|recursion)\b' compile.el | wc -l 0
- 224 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 16:02:44 ]
- emacsclient の、標準入力って使えないのかな?
こんな感じに % date | emacsclient これとか、 % date | emacsclient - % date | emacsclient --eval '(read)' 試したんだけど、違った。
- 225 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:25:43 ]
- >>220
> ってcompile.elのソースに書いてあったと思ったよ byte-opt.elの間違いじゃないの? >>223 もうちょっと頭使えば正解にたどり着けたのにね
- 226 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:30:13 ]
- 泣きながらgrepしたんだねw でも面倒くさいからなんて書いてないからwww
- 227 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:41:08 ]
- とgrep厨が申しております
- 228 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:10:51 ]
- じゃあ私はemacs厨!
- 229 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:31:16 ]
- キッチンシンクなだけに厨がよく似合います
- 230 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:21:52 ]
- うまいな
- 231 名前:host-130-64-82-173.medford.tufts.edu mailto:sage [2009/08/21(金) 00:23:18 ]
- Xubuntu8.04 にEmacs Speaks Statistics を入れています。
起動時に https://bugs.launchpad.net/ubuntu/+source/a2ps/+bug/248134 と同様、 Error while loading 50a2ps のメッセージが出て気持ち悪いです.(動くことは動く) patchのあて方が分かりません.どなたか教えてください.
- 232 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:48:16 ]
- >>231
Emacs Lisp全く関係ないと思うけど、 ttp://ja.wikipedia.org/wiki/Patch ttp://www.linux.or.jp/JM/html/GNU_patch/man1/patch.1.html でも、そこにあるパッチって、一ヶ所クォートするだけだから、 どう考えてもエディタで編集した方が早いよ。
- 233 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:50:29 ]
- Emacs LispにCommon Lispの merge-pathnames に相当する関数はありますか?
- 234 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:05:19 ]
- >>233
expand-filename ?
- 235 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:41:25 ]
- >>234
expand-file-name ですね。 ありがとうございます。期待通りの動作ができました。
- 236 名前:231 mailto:sage [2009/08/22(土) 04:16:29 ]
- sudo patch -p0 < 50a2ps.patch
でいけました。lispとは関係なかったですか。
- 237 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:09:48 ]
- >>236
だって、知りたいのはpatchコマンドの使い方だったわけじゃない? 例えば、LinuxカーネルがC言語で書かれてるからって、 C言語のスレでカーネルのコンパイルの仕方とか聞かないでしょ? diffとpatchは、UNIX系のOSを使う上で知っていると便利だから、 当て方、作り方、読み方は知っておくといいと思う。 ともあれ、無事に当たって良かったね。
- 238 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:07:48 ]
- Python だと、例えば
def foo (*args): ... の関数を L = (1, 2, 3) foo(*L) # foo(1, 2, 3) と同じ意味 と実行することが可能なのですが、emacs lisp でも同様に (defun foo (&rest args) ...) の関数の引数をpre-expandすることは可能ですか? イメージとしでは (setq L '(1 2 3)) (foo *L) のような感じです。
- 239 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:19:51 ]
- applyを使う
詳しい使い方は(info "elisp")見てくれ (let ((strs '("foo" "bar" "baz"))) (assert (string= (apply 'concat strs) (concat "foo" "bar" "baz"))))
- 240 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:28:59 ]
- やはりその用途だと apply を使うしかなさそうですか。
ありがとうございました。
- 241 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:40:52 ]
- 度々質問すみません。
`sleep-for' は "without updating display" なので、 (insert foo) (sleep-for n) をしても foo の中の文字列がバッファ上に表示される前に n 秒止まる作用があるのですが、 foo の内容を "表示させた後" に sleep する方法はありますか?
- 242 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:44:27 ]
- >>241
自己解決しました。 (redisplay t)
- 243 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:21:41 ]
- mode line と echo area を消す方法はありますか?
- 244 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 14:43:29 ]
- しかし、emacsコアのソースコードは綺麗だなー。
- 245 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 03:31:39 ]
- Emacsで独自コマンドを定義したいのですが
M-x hoge 3 の用に引数を与えるか、もしくは M-x hoge Input number: の用にプロンプトを出したいです。 両方の方法について調べてみたのですが どちらについても解説が見つかりませんでした。 どのようにすれば良いのかご教授ください。
- 246 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 04:06:45 ]
- >>245
前者は interactive の引数に N だか p だかを加える。 後者は (defun hoge () (read-number "Input number: "))
- 247 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 04:26:39 ]
- ありがとう御座います。
助かりました.
- 248 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 22:16:51 ]
- interactive に n ってのがあるよ。
- 249 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:29:11 ]
- (defun hoge (num)
(interactive "nInput number:") (message "%d" num))
- 250 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 18:10:26 ]
- interactive は関数型的ではないので嫌い。
便利そうに見せかけて逆にプログラムを汚くするから嫌い。 コードレターが文字列に混ざっていてキモイので嫌い。
- 251 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 18:23:59 ]
- どうしたいんだ?文句いうだけ?
- 252 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 19:58:02 ]
- >>251
たった今、今年一番のセックルしてきたからこの際素直になるわ。 ごめん、文句言うだけだった。
|

|