1 名前:おっす [03/09/18 19:29] なんとなくEmacs 触り始めて、なんとなくelispにも手を出して しまったアナタ。 なんとなく書いてしまったコードをココに書き込んで叩かれましょう。 タタカレテツヨクナレ。 年季の入った玄人衆は、もしアドバイスできたらお願いします。 いや、叩きついでにでも。 とりあえず入門書は ttp://www.netfort.gr.jp/~kiyoka/emacs_setq/emacs_setq.html ttp://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp.html リファレンスマニュアルは(ちと古い) ttp://www.fan.gr.jp/~ring/doc/elisp-manual/elisp.html とか、新しいのは(でも英語) ttp://www.delorie.com/gnu/docs/elisp-manual-21/elisp.html ではひとつ、コード中心の熱いバトルをよろぴく。
188 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/10 20:39] arg1 が non-nil なら a-list に arg2 を append、 arg1 が nil なら b-list に arg2 を append、って処理をやりたいんですが (defun my-test (arg1 arg2) (if arg1 (setq a-list (append arg2 a-list)) (setq b-list (append arg2 b-list)))) これじゃちょっと不恰好な気がします。スマートに実装する方法ありませんか ね。
189 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/11 01:40] (let ((sym (if arg1 'a-list 'b-list))) (set sym (append arg2 (symbol-value sym))))
190 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/11 18:30] >>189 set ってこんな時に使えるのか。サンクスコでした。
191 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 08:04] マ板、Emacs Lispスレから流れてきました。 ○×ゲームを作っていくという話題。 とりあえず、入力はこんな感じで。 (read-from-minibuffer " │○│ ―┼―┼― │×│ ―┼―┼― │ │ コンマで区切って2つの数字を入力してください。(例 0,0)")
192 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 13:06] 何でminibuffer使う? 一瞬 gomoku.el の部品が使えないかなと思ったけど 自分で書いた方がはやそう。
193 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 15:56] ○×か。最初から敷居が高いなぁ。 入力はコンマ区切りよりリストとして入力させる方が良いハックじゃないかな? コンマはパースしなくちゃいけないし。
194 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 16:10] 何も考えずに、ここまでやってみた。ボードと終了判定があるだけ。 あとは、エラーチェックの徹底と思考ルーチンかな。 長いので2回に分けます。 (defun ox-index (x y) (+ (* y 3) x)) (defun ox-line (vector y) (format "%c|%c|%c" (aref vector (ox-index 0 y)) (aref vector (ox-index 1 y)) (aref vector (ox-index 2 y)))) (defun ox-board (vector) (format "%s\n-+-+-\n%s\n-+-+-\n%s\n" (ox-line vector 0) (ox-line vector 1) (ox-line vector 2))) (defun ox-read (vector o-or-x) (1- (string-to-int (read-from-minibuffer (format "%s (%cの番です) " (ox-board board) o-or-x)))))
195 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 16:12] しょの2 (defun ox-game-over-p (vector) (catch 'loop (dolist (indexes '((0 1 2) (2 5 8) (7 6 8) (0 3 6) (0 4 8) (1 4 7) (2 4 6) (3 4 5))) (let ((marks (mapcar #'(lambda (i) (aref vector i)) indexes))) (when (or (null (remove ?O marks)) (null (remove ?X marks))) (message (format "%s (%cの勝ちです。)" (ox-board board) (car marks))) (throw 'loop t))))))
196 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 16:13] あとminibufferよりも新しく編集バッファを作成してエディタ内のテキストを 操作する方が良いと思う。二次元の平面を扱うなら。 例えば以下のような感じ。 (progn (get-buffer-create "hoge") (switch-to-buffer "hoge") (erase-buffer) (insert "○|×|○ \n") (insert "×|○|○ \n") (insert "×|○|× \n"))
197 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 16:13] しょの3 (defun ox () (interactive) (let ((board (vconcat '(?1 ?2 ?3 ?4 ?5 ?6 ?7 ?8 ?9))) (o-or-x ?O) i mark) (while (not (ox-game-over-p board)) (setq i (ox-read board o-or-x)) (setq mark (aref board i)) (if (member mark '(?O ?X)) (progn (message (format "%s (そこには置けません)" (ox-board board))) (sit-for 1)) (aset board i o-or-x) (setq o-or-x (if (eql o-or-x ?O) ?X ?O))))))
198 名前:名無しさん@お腹いっぱい。 [04/05/12 16:20] Emacsって何?
199 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 16:22] >>192 > 何でminibuffer使う? > 一瞬 gomoku.el の部品が使えないかなと思ったけど > 自分で書いた方がはやそう。 その場のノリですが、むりやり理由をつければゲーム後に画面の後かたずけとかが自動的に行われるからです。 >>193 >入力はコンマ区切りよりリストとして入力させる方が良いハックじゃないかな? >コンマはパースしなくちゃいけないし。 置ける場所に番号を書いておいて、それを入力してもらう方法をとってみました。 思考ルーチンも総あたりすればいいだけですね。 ox-game-over-pではthrowでdolistを早抜けしているんですけど、elisp的な 定石はこれでいいのでしょうか。
200 名前:鬱­猫­2030 ◆utuPOcVnl. mailto:utucat@yahoo.co.jp [04/05/12 18:14] ここで>>1 を読んで修業すればnavi2chみたいの書けますか?
201 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 19:22] 書けるよ
202 名前:鬱­猫­2030 ◆utuPOcVnl. mailto:utucat@yahoo.co.jp [04/05/12 21:20] ネット関係のライブラリが標準で用意されているのですか? P2P関係のものを何か作りたいのですがtcp/ip層までいじれますか?
203 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/12 21:43] リリースされてる版だと、Emacs Lisp からできるのは TCP の connect(2) だけ。 accept(2) へのインターフェイスは 用意されてないから P2P やりたいなら 下請けの外部プログラムが必要。
204 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/13 00:53] M-x namazu とする代わりに F2 キーでカーソルのある単語を検索できればと思い, namazu.el を読んだ上で以下のように設定しました しかしこの設定で F2 キーを叩いても, 別のバッファが開いて「32 件検索しました」 という メッセージが出るところまで行くのですが 検索結果がでません どこを直せばよいのでしょうか (global-set-key [(f2)] (lambda () (interactive) (namazu namazu-search-num namazu-default-dir (current-word))) )
205 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/13 04:54] namazu の最初の引数は PAGE-NUM みたいなので普通は 0 でしょう。
206 名前:204 mailto:sage [04/05/14 00:09] >>205 コメントありがとうございます 0 を入れてみたのですが改善しませんでした 出力結果は以下のようにヘッダとフッタだけ出てるようで中身が出ません M-x namazu でインタラクティブに実行するのは問題ないのですが。。。 検索結果 参考ヒット数: [ BufferedReader: 52 ] 検索式にマッチする 52 個の文書が見つかりました。 現在のリスト: 1 - 0 ペイジ: [1][2][3][4][5][6][7][8][9][10][11][12][13][14][15][16][17][18][19][20]
207 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/14 00:35] namazu-search-num が 0 になってない? (namazu namazu-search-num namazu-default-dir (current-word)) で namazu-search-num を 0 にするんじゃなくて、 (namazu 0 namazu-default-dir (current-word)) にしたら? ってこと。
208 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/14 14:01] 読書メモの為に下みたいなのを挿入したいのですけども。 Date:2004-01-26 Page: Memo: で、ムチャクソ頑張って下みたいなのを書きました。 (defun bookz () "Retune the current time as a string in Date from." (format-time-string "Date:%04Y-%02m-%02d\nPage:\nMemo:") ) (defun insert-bookz nil "Insert bookz." (interactive) (insert (bookz)) ) (define-key global-map "\C-c\C-d" 'insert-bookz) なんかもっと綺麗に書く方法とかありますか?
209 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/14 15:39] >>208 > なんかもっと綺麗に書く方法とかありますか? ispellを使う、とか
210 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/14 16:34] しかしそれでもfromを見つけられない罠
211 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/14 17:04] queequegも利用してみるとか? 試したことないけど。
212 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/14 18:41] そのまま翻訳にかけてみるのも手かもな
213 名前:204,206 [04/05/19 22:32] >>207 コメントありがとうございます namazu-search-num が 0 になってない? おかげさまで以下のようにしてうまく行きました (setq namazu-search-num 20) ... (namazu 0 namazu-default-dir (current-word)) てっきりnamazu-search-num と namazu の第一引数は同じにするものだと思いこんでいました ありがとうございました
214 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/26 15:39] (defun display-binaried-file (file) (interactive "fFilename: ") (with-output-to-temp-buffer "Binary" (with-temp-buffer (let ((addr 0) s) (insert-file-literally file) (goto-char (point-min)) (while (re-search-forward "\\=\\(?:.\\|\n\\)\\{1,8\\}" nil t) (princ (format "%08X:" addr)) (setq s (match-string 0) addr (+ 8 addr)) (mapc (lambda (c) (princ " ") (dotimes (i 8) (princ (if (zerop (logand 128 c)) "0" "1")) (setq c (lsh c 1)))) s) (princ (format "%s %s\n" (make-string (* 9 (- 8 (length s))) ?\040) (mapconcat (lambda (c) (if (and (<= 32 c) (< c 127)) (char-to-string c) ".")) s nil))))))))
215 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/26 15:49] >>214 あんがとね。 いやー、あんた最高だよ。
216 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 20:45] >>214 イイ!! > (mapc (lambda (c) > (princ " ") > (dotimes (i 8) > (princ (if (zerop (logand 128 c)) "0" "1")) > (setq c (lsh c 1)))) > s) でもここはdotimesよりそのまんま (princ (if (zerop (logand 128 c)) "0" "1")) (setq c (lsh c 1)) (princ (if (zerop (logand 128 c)) "0" "1")) (setq c (lsh c 1)) .... のように羅列した方が少々早くなんない?(コードが汚くなるのは認めるけど) 1 character ずつ dotimes やってたら大きなファイルの時に かなり遅れるかもしれんし。
217 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 21:27] 速度命!ならビットパターンを表す文字列をキャッシュしといた方が簡単確実。
218 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/28 23:47] >>216 速度を考えるなら、大量のリストや文字列を作らないようにすることも重要と 考えている。その点で 214 は文字列に関してちょっとイージー、というか所 詮ワンショットの関数。バッファ終端の判定を楽にしたいという理由だけで8 バイトずつ文字列に突っ込んでいる。 > (princ (if (zerop (logand 128 c)) "0" "1")) > (setq c (lsh c 1)) > (princ (if (zerop (logand 128 c)) "0" "1")) > (setq c (lsh c 1)) .... せめて、 (princ (if (zerop (logand 128 c)) "0" "1")) (princ (if (zerop (logand 64 c)) "0" "1")) (princ (if (zerop (logand 32 c)) "0" "1")) ... だな。 (princ (mapconcat (lambda (mask) (if (zerop (logand mask c)) "0" "1")) '(128 64 32 16 8 4 2 1) nil)) はありだった。 insert-file-literally は insert-file-contents-literally じゃなきゃだめ。
219 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 02:41] (do ((x 128 (rsh x 1))) ((<= x 0)) (princ (if (zerop (logand x c)) "0" "1")))
220 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 03:06] たった 256 個だから (defconst byte-to-bit-string (let ((v (make-vector 256 nil))) (dotimes (i 256) ...))) してあらかじめ作っとけばいいじゃん。
221 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 11:45] (defconst byte-to-bit-string (let ((a '("0" "1")) (f (lambda (&rest x) (let ((x (reverse x)) (r '(""))) (while x (setq r (apply #'append (mapcar (lambda (x) (mapcar (lambda (y) (concat x y)) r)) (car x)))) (setq x (cdr x))) r)))) (funcall f a a a a a a a a)))
222 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 12:05] なんかビット絡みはついてけない(´・ω・`)ショボーン
223 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 14:07] >>219 rshって、remote shellで実行するのか? 昔から思ってたんだけど、logand/logiorってRMSのチョンボだな。 logicalじゃなくてarithmaticだろ。 またnatnumpってのもあるけど、0はnatunal numberじゃない。
224 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 14:13] >>223 > 0はnatunal numberじゃない。 定義による。 0を自然数に含めることもある。 ttp://www.ss.u-tokai.ac.jp/~itai/column/three.html
225 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 14:32] >>224 そうか。 じゃMITじゃビットAND/ORもlogicalって呼ぶのかもしれないな
226 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 14:39] >>223 aithmatic じゃなくて bit-and/or operatorか。
227 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 16:17] (defun write-binaried-file (filename) (interactive (list (read-file-name "Write file: " nil buffer-file-name nil buffer-file-name))) (let (i buf temp-buffer-show-hook) (with-output-to-temp-buffer " *outbuf*" (save-excursion (save-restriction (widen) (goto-char (point-min)) (while (re-search-forward "^\\([0-F]+\\): +\\(?:\\(?:[01]\\{8\\}\\) \\)\\{8\\}" nil t) (goto-char (match-end 1)) (setq i 0) (while (< i 8) (re-search-forward "[01]+") (princ (char-to-string (string-to-number (match-string 0) 2))) (setq i (1+ i)))) (if (re-search-forward "^\\([0-F]+\\): +\\([01]\\{8\\}\\) ") (progn (goto-char (match-beginning 2)) (setq i 0) (while (and (< i 8) (re-search-forward "\\=\\([01]\\{8\\}\\) " nil t)) (princ (char-to-string (string-to-number (match-string 1) 2))) (setq i (1+ i))))) (setq buf standard-output)))) (set-buffer buf) (let ((coding-system-for-write 'no-conversion)) (write-region (point-min) (point-max) filename)) (kill-buffer buf)))
228 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 17:02] >>227 save-XX 2つはwith-output-to-temp-bufferの外の方がよかった。 エラーチェックなんてほとんどしてないので、上書きとかしない方がいいかも。
229 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 17:37] たいしたことではなくてすまんのだが、write-binaried-file はwrite-file-in-binaryの方がアメ人側からするとわかりやすいとおもた。
230 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 17:55] 今になって知ったんだが、hexl-modeは外部プログラムを使ってたんだな。 2進表示より、右側に全角文字を表示をして欲しいんだが、そういうことを考 えると、やっぱelispだ。
231 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/29 18:08] 全角文字
232 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 20:15] ----BEGIN BASE64----(binary-dump.el.gz) H4sICJnAuUAAC2JpbmFyeS1kdW1wLmVsAKVY227jNhB9tr/iwEBjqjUDy/fUcdwm zQIF+lT0cR8qS0wsrCx5KWWzBop+e4ek7rKcRM2LKR7OhTPDM2TW6zV2fujIE/de DsdrEYBzDtcN4EaeHz4jPsWJOOApkvD8+Bg4JzVrZKBl+mtS8sC/48/Hv+CW1enZ B/6ET7//8YgkQiyEGfthVUWfiW9OwF/3IuRudDj6gaA5Tzy90EKP3OFSOB7fnRIB 5lt9gAUiAWNSPNNEmAgZgpGTByfBQP7gDWhBvIcPblvqjyRIxn8C22BMWPTshB5s +AT1/lZ6HA8j0maByTl+2sCmkZrA7YpEUg1AthZyZqGx9p+NmtcGq+6/Sj8RfO/v fPJarSSPDxSBJJJKM2lVvmkdVxhp323Yc4sUa1Fs7WI4Lu+nLjPrIDPtIDPpIGN3 kBl/XAY3HWRWb8iY71Epby1JDqIPJRnLDs4uOsh0KCZ0KCZ0KCZ0KCZ0KCa8VUzv TnLKRLUMM1rmOkHQwjQYNslg2CgdIiTt/lukppeVPW11lLt7R6a8qfhrhg2F5p0W Rr+0bYbd3dGpod8rTObzKsuSjVtMJ0WIr60cuMP23ypghpo5tYrGXg7OF8Fj8RUs LJF/gNAP8tTtqWmA3WpHY5F8BW3N5gitnLvNNGXHjcKY4CCDgobBvN3EmUnneAxO GNKPoBCwg3N0VVAD57DzHBVcsHqn0s2l18uAfBNha4OoW9Sm3m250KHM9npm135W jX4WD0oMtj9bxrvz7qnUU6mk54EZLJGq97MfcQPGsUpVtbc7vZu0+P73lowe/wNO U5Zdquuq88ZvXZqDz+Gg5LwqigR78V0Z4t+ES4eKSkbL8STKZgZjezKdzRfL1c2v 9w+/PX4atOze8TwpYsqmOXamSuVSnT0mF6DDM6HTc1Xp8gSPqh5Y5+RmHeXG3eTs RUe5STc5dIwLOsYFOi6rd4gZmIrnPE2lLO6Hol7wZwpDl2ujzImXWgBzAHSd91PD ZIirVUcZPUvnQAbVlyfo7k5CxUVcF6Btmw2r22y/R1weHfX91XwbriCyb/DfqomW 9lmgSjfdhcsT4iicpOBf2pR0QncPOc/WKAbHej1qKi6cwhnUvohOLqLTi+jsIjq/ iC4uossCzUnnfAZFeCaDQ2YjzVqaO/UOkeOssY6x2ZiWuyPki1WOv7ZbFYO0ISeQ U+q7lBBQ9qTysJd18KXSp25J9Lyjj1ef7jU7AU8QJb64ifD6WYcp2de3KjWkw3+T Dy0rXduycpUNx5ZVdsEuL6S31WJWgSc1WPWiEjytwURjZXhWg1cVdF5Dq5YXNTQ3 nPLHOP3MUlQSzdJURO9COrefw/P5zAopxfL41lOef6t6043QvOt5+q6n+2fpvT7D 9h6D++JlPkBmasjOUwuuWypWWVw3/71AbBhTk5Xiuv8fdZ8WR30QAAA= ----END BASE64----
233 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 21:00] >>232 いやー、かなり早くなったね。
234 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 22:55] >>232 すごいすごい。 せっかくなので、アドレス部の表示をファイル位置にできたりしませんか? (insert-file-contentsでBEG ENDを指定した場合など)
235 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/30 23:34] ヽ(`Д´)ノ cclってナンダヨー
236 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/31 11:55] >>235 code convetion lang
237 名前:名無しさん@お腹いっぱい。 mailto:sage [04/05/31 15:49] 16bit,32bit,64bit,128bit単位の表示、および ビッグ・エンディアン、リトル・エンディアンの切り替え もできれば、言うこと無しだが・・・
238 名前:名無しさん@お腹いっぱい。 mailto:sage [04/06/03 17:13] (defun bdccl-write-8bit (reg terminator bit) (let ((x (+ bit 8)) (r (list `(write ,terminator)))) (while (< bit x) (setq r (cons `(if (,reg & ,(lsh 1 bit)) (write ?1) (write ?0)) r)) (setq bit (+ bit 1))) r)) (defun bdccl-write-hibit (reg terminator) (bdccl-write-8bit reg terminator 8)) (defun bdccl-write-lobit (reg terminator) (bdccl-write-8bit reg terminator 0))
239 名前:名無しさん@お腹いっぱい。 [04/06/09 23:51] すいません初歩的質問なんですが、リファレンスマニュアルを最終的にPDF化したいのですが、 ftp://ftp.ascii.co.jp/pub/GNU/elisp-manual-20/elisp-manual-20-2.5-jp.tgz これを展開して、README.jisを読んだんですが、elisp.dviの作成手順で GNU Emacs Lisp Reference Manual のソースツリーのファイルtexinfo.texが どこにあるのだか分かりません。どこにあるんでしょうか?
240 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/02 17:30] >>239 texinfo のソースツリーに入ってます。 ttp://savannah.gnu.org/cgi-bin/viewcvs/texinfo/texinfo/doc/ ところで、bookshelf.jp にある私的日本語化プロジェクトは texinfo 形式のソースがあるのかな?
241 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/02 21:33] >>240 texinfo でやってますので,ソースはありますけど,公開はしてません.
242 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/02 21:42] では公開していただけますか?
243 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/03 09:21] >>241 あ、texinfoのやつがあると僕もうれしい。支障なかったら公開きぼんぬです。
244 名前:名無しさん@お腹いっぱい。 mailto:sage [04/07/03 09:45] >> 242,243 支障ないので,そのうちに公開しておきます. 少しお待ちを
245 名前:名無しさん@お腹いっぱい。 [04/07/13 23:34] >>232 (defun bdccl-write-hibit (reg terminator) `((if (,reg & ,(lsh 1 15)) (write ?1) (write ?0)) (if (,reg & ,(lsh 1 14)) (write ?1) (write ?0)) (if (,reg & ,(lsh 1 13)) (write ?1) (write ?0)) ... (lsh 1 15) これを下のように定数にしないのは マクロ展開されるて、実行時には関係なくなるから? (defun bdccl-write-hibit (reg terminator) `((if (,reg & 32768) (write ?1) (write ?0)) (if (,reg & 16384)) (write ?1) (write ?0))
246 名前:名無しさん@お腹いっぱい。 [04/07/13 23:37] >>232 と同じような Hex dump ってあるのかな? そっちの方が僕は使うな。 binary にしてどんな時に便利か教えてくれ。
247 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/11 23:45] ほしゅ。
248 名前:名無しさん@お腹いっぱい。 mailto:sage [04/08/15 01:57] つか、ほしゅしなくても落ちないのでは?
249 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 11:11] 連番を作るのに、こんなのを作ってるんだけど、 うまく動かない。 どこが悪いのかな…。 (do ((i 1)) ((> i 10)) (insert (format "Sequence%d\n" i)) (setq i (1+ i)))
250 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 11:43] あなたは elisper ではありませんね?
251 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 14:16] 先生! このマンコ関数はどうでしょう? (defun manko(i) (cond ((> i 0) (insert (format "Sequence%d\n" i)) (manko (- i 1))) (t nil))) (manko 10)
252 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/07 23:36] number-sequence
253 名前:249 mailto:sage [04/09/08 11:31] >>251 ありがとう。 でも、こういわれてしまう…。 Debugger entered--Lisp error: (void-function manko) (manko 10) eval((manko 10)) eval-last-sexp-1(nil) eval-last-sexp(nil) * call-interactively(eval-last-sexp) recursive-edit() byte-code("堰ニ!秩ー∨ 秩ー¬!秩ッ⊃n?
254 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/09 21:01] (do ((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i)))
255 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/09 22:02] ちゃんと書きなよ。 しかし do なんか使わなくても。
256 名前:249 mailto:sage [04/09/09 22:37] >>254 環境が悪いのでしょうか。 Debugger entered--Lisp error: (invalid-function (i 1 (1+ i))) ((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i))) eval(((i 1 (1+ i)) ((> i 10)) (insert (format "Sequence%d\n" i)))) eval-last-sexp-1(nil) eval-last-sexp(nil) * call-interactively(eval-last-sexp)
257 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/09 23:43] >>249 そもそも「うまく動」いたらどうなるんだ? 期待してる結果が書いてない。
258 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 01:03] (require 'cl) (do ((i 1 (1+ i))) ((> i 10)) (insert (format "Sequence%d\n" i)))
259 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 09:17] なんか覚えにくい構文だな。 まだloopのほうが、という気がした。
260 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 10:12] eldocでミニバッファに出るから覚えなくても書ける。 でも普通はdotimesなんかを使うとは思うんだが。
261 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 11:14] エコーエリア
262 名前:249 mailto:sage [04/09/10 17:28:00] >>258 ありがとう!! (require 'cl) これが不足でした。 (do ((i 1 (1+ i))) ((> i 10)) (insert (format "Sequence%d\n" i))) (do ((i 1)) ((> i 10)) (insert (format "Sequence%d\n" i)) (setq i (1+ i))) どちらでも動きました。 しかし。 doなんてとか、loopのほうが、っていうなら、 サンプルを掲示してみてはどうでしょう。 言い合いをしているだけでは何にもならないじゃないですか。
263 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 17:48:24] 「してくれないでしょうか?」の間違いではなくて? 個人的には、何故doでやってみようとしたかに興味が少しある。
264 名前:260 mailto:sage [04/09/10 18:49:50] >>262 調べろよ、それくらい。 見て猿真似できるサンプルが出てこないと何も出来ない池沼なのかよ。 キーワードが出てくるだけで十分だろ。 # cl-macsにloopがあるとは知らんかった そもそも「言い合い」になるほど骨のある内容じゃなかったし。
265 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/10 19:05:04] 池沼というのは、マンコ関数でひっかかってる時点で明らか。>>253
266 名前:260 mailto:sage [04/09/10 19:15:10] 言われてみればその通りだった。orz
267 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 01:45:39] (let ((i 0)) (while (< i 10) ..... )) とかの方が分かりやすくて好きなんだけどな
268 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 04:07:53] viperで、vimの"*"コマンドを実装した。 (define-key viper-vi-global-user-map "*" 'viper-exec-word-search-nearest-cursor) (define-key viper-vi-global-user-map "#" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor t))) (define-key viper-vi-global-user-map "g*" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor nil t))) (define-key viper-vi-global-user-map "g#" '(lambda () (interactive) (viper-exec-word-search-nearest-cursor t t))) (defun viper-exec-word-search-nearest-cursor (&optional reverse unbound) "Emulate vim \"*\" command." (interactive) (let ((word (viper-surrounding-word 1 1))) (when (stringp word) (setq viper-s-string (if unbound word (concat "\\<" word "\\>"))) (setq viper-s-forward (not reverse)) (setq viper-search-history (cons viper-s-string viper-search-history)) (setq viper-intermediate-command 'viper-exec-word-search-nearest-cursor) (viper-search viper-s-string viper-s-forward 1))))
269 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 09:49:16] >>268 おーなかなかいいすね。使わせてもらいまっさ。 でも g + hogehoge は viper 流の (viper-buffer-search-enable) の方が好き :-) ;; しかし viper 異様に重いよなあ…。ボクのマシンがボロなだけ?(´・ω・`)
270 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/12 14:11:08] 再帰好きなelisperの人は max-lisp-eval-depth と max-specpdl-size に どのくらいの値を設定してるの?
271 名前:268 mailto:sage [04/09/18 10:06:39] www.vim.orgで公開されているscriptで定番のやつの実装。 ;;; alternate files quickly (defvar a-extension-map '(("c" . "h") ("cc" . "h") ("h" . ("c" "cc")) ("emacs" . "viper") ("viper" . "emacs")) "The corresponding associative list of extensions.") (defun alternate-files-quickly () "A few of quick commands to swtich between source files and header files quickly." (interactive) (if buffer-file-name (let ((ext (file-name-extension buffer-file-name)) (base (file-name-sans-extension (file-name-nondirectory buffer-file-name))) data a_ext a_file) (when (and ext base (< 0 (length ext))) (setq data (cdr (assoc ext a-extension-map))) (cond ((stringp data) (setq a_ext data) (when (< 0 (length a_ext)) (setq a_file (concat base "." a_ext)) (when (file-exists-p a_file) (find-file a_file)))) ((listp data) (catch 'break (while data (setq a_ext (car data)) (when (and (stringp a_ext) (< 0 (length a_ext))) (setq a_file (concat base "." a_ext)) (when (file-exists-p a_file) (find-file a_file) (throw 'break t))) (setq data (cdr data))))))))))
272 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 17:14:26] ;;; filecache の対象を load-path にすると、 ;;; .el 以外のファイルもついてきて面倒なので以外を消す ;;; 必要なのはあとで追加する (defun file-cache-not-el-list () (let (nelist) (dolist (list file-cache-alist) (catch 'quit (unless (string-match "^.*\\.el\\'" (car list)) (setq nelist (cons (car list) nelist)) (throw 'quit nil)))) nelist)) (file-cache-add-directory-list load-path) (file-cache-delete-file-list (file-cache-not-el-list)) (file-cache-add-file-list '("~/.emacs" "~/.skk" "~/.wl" "~/.folders" "~/.bashrc"))
273 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 17:58:29] cach - throw は何のため? (defun file-cache-not-el-list () (delq nil (mapcar (lambda (list) (unless (string-match "\\.el\\'" (car list)) (car list))) file-cache-alist)))
274 名前:名無しさん@お腹いっぱい。 mailto:sage [04/09/20 18:05:39] >>273 叩かれて強くなるためです 勉強になりました
275 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 22:51:00] 30 分ほど考えたり調べたりしましたが,わからなかったので質問させてください. (list (list '("A" . "1") '("B" . "2")) (list '("C" . "3")) (list '("D" . "4") '("E" . "5"))) を (list '("A" . "1") '("B" . "2") '("C" . "3") '("D" . "4") '("E" . "5")) のように展開(?)するにはどうしたら良いのでしょうか?
276 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:02:53] 何をどう調べたり考えたりしたのか書いた方がいいと思うよ。 これこれを試してみたとか。 ヒントとしては、 mapc + append
277 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:07:21] 宿題なのかなー?
278 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:09:05] 展開後(?)の表記のしかたが悪い。 それを評価した結果になってほしいのか、まさにそれが欲しいのか。
279 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:14:48] >>275 (apply #'append (list (list '("A" . "1") '("B" . "2")) (list '("C" . "3")) (list '("D" . "4") '("E" . "5"))))
280 名前:名無しさん@お腹いっぱい。 mailto:sage [04/10/24 23:16:21] >>275 pc5.2ch.net/test/read.cgi/unix/1083394705/405 これ書いたやつだろ。 >>276 mapcは違うと思うぞ。
281 名前:276 mailto:sage [04/10/24 23:17:46] >>280 applyが思い浮かばなかったのさ……
282 名前:275 mailto:sage [04/10/24 23:43:20] 素早いレスありがとうございます.うまくいきました. > 何をどう調べたり考えたりしたのか書いた方がいいと思うよ。 > これこれを試してみたとか。 GNU Emacs Lisp Reference Manual のリスト関連をあさっていました. > 宿題なのかなー? 趣味です. > 展開後(?)の表記のしかたが悪い。 > それを評価した結果になってほしいのか、まさにそれが欲しいのか。 おっしゃるとおりですね.勉強不足でした. >>279 > (apply #'append すみません,この「#'」はリファレンスマニュアルのどの辺をみれば良いのでしょうか? ポインタだけでも教えて頂けるとありがたいです. > pc5.2ch.net/test/read.cgi/unix/1083394705/405 > これ書いたやつだろ。 そうです.何か問題ありましたでしょうか?
283 名前:276 mailto:sage [04/10/24 23:59:29] >>282 #'はemacs lispではほとんど'と一緒。関数にのみ使うと思っておいて。 refrence manualだけじゃなくてemacs-lisp-intro は読んだ?
284 名前:275 mailto:sage [04/10/25 00:01:12] >> 283 まだ読んでません.どうも基礎がわかってないみたいなので,まずは そちらから読んでみます.お世話になりました.
285 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 12:28:51] (defun my-w3m-view-url-with-external-browser () "emacs-w3mから外部ブラウザを起動する" (interactive) (let ((url (or (w3m-anchor) (ffap-url-at-point) w3m-current-url))) (message "Browsing <%s>..." url) (start-process "external-browser" nil "C:/Program Files/Mozilla Firefox/firefox.exe" url))) FireFoxを閉じないと、↓こんなメッセージが出てEmacsも閉じられない・・・ Active processes exist; kill them and exit anyway? (y or n) どなたかアドバイスをお願いします。
286 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 12:45:52] >>285 unix なら PROGRAM に & を付ければ? って話なんだろうけど。 firefox.exe のオプションか別コマンドで「firefox に url を渡してする終 了する」ってなことができるんじゃないの?
287 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 13:27:30] process-kill-without-query じゃない?
288 名前:名無しさん@お腹いっぱい。 mailto:sage [04/11/09 14:01:40] ごもっとも orz