のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,519,226人
昨日:no data人
今日:
最近の注目
人気の最安値情報

私的良スレ書庫

不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

元スレEmacs Part 43

emacs スレッド一覧へ / emacs とは? / 携帯版 / dat(gz)で取得 / トップメニュー
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
レスフィルター : (試験中)
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
501 : 名無しさん@お腹 - 2013/09/27(金) 05:57:03.11 (+64,+29,-29)
>>499
おいどんも、コードを貼ってくれることを
希望するでごわす。
502 : 名無しさん@お腹 - 2013/09/27(金) 08:38:55.20 (+68,+29,+0)
>>499
高校二年女子です。
わたしからもお願いします。
503 : 名無しさん@お腹 - 2013/09/27(金) 10:09:23.52 (+52,+29,-1)
しかたないにゃあ・・・
504 : 名無しさん@お腹 - 2013/09/27(金) 12:49:19.21 (+66,-30,-213)
gccのバージョンによって設定を場合分けしたくてこのように書いたんですが
全て"4"と出力されてしまいます
どこが間違っているのでしょうか

(setq debian-x86-64 "")
(setq ubuntu-x86-64 "")
(setq g++ver (shell-command-to-string "g++ -v"))

(defun case-test (value)
(case value
(debian-x86-64 "1")
(ubuntu-x84-64 "2")
(g++ver "3")
(t "4")))

(message (case-test debian-x86-64))
(message (case-test (shell-command-to-string "g++ -v")))
(message (case-test "sklfj"))
505 : 名無しさん@お腹 - 2013/09/27(金) 15:16:02.54 (+33,+3,+0)
caseを使ってるとこが
506 : 名無しさん@お腹 - 2013/09/27(金) 17:40:50.49 (+57,+29,-14)
ミニバッファまわりのキーバインドってなんでああも治外法権状態なん?
「お前のglobal-mapなんぞ知るかボケェ!」な奴多すぎだろ
507 : 名無しさん@お腹 - 2013/09/27(金) 18:45:05.19 (+37,-29,-30)
>>504
高校二年女子です。

まずは、case-test関数をedebug-defunして、ご自分のされていることを確認されたほうがよろしいかと思います。
それと、'g++ -v'そのままではなく、regexで引っ掛ける等しないと、このままではどうしようもないかと。
508 : 名無しさん@お腹 - 2013/09/27(金) 19:33:07.95 (-1,-29,-17)
g++ -vよりg++ --versionの方が一行目にバージョンが来るからいじりやすいと思う
509 : 名無しさん@お腹 - 2013/09/27(金) 19:52:23.40 (+94,+27,-28)
>>507
501のエセ薩摩人です。

499氏がコードを貼り付けなかったら
おいどんと付き合ってください。
510 : 名無しさん@お腹 - 2013/09/27(金) 23:01:26.08 (+58,-30,-283)
>>504
>>505が言っているようにcondを使えばよろし
そういう形で分岐したいならこうかな

(defmacro cond-case (value &rest body)
(lexical-let* ((cand (gensym))
(result (gensym)))
`(loop for (cand result) in (quote ,body)
do (when (and (symbolp cand)
(or (equal (symbol-value cand) ,value)
(equal (symbol-value cand) t)))
(return result)))))

(defun case-test2 (value)
(cond-case value
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))

(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))
511 : 名無しさん@お腹 - 2013/09/28(土) 07:24:23.71 (+69,+29,+2)
>>509
47歳男子です。
ありがとうございます。今後ともどうぞよろしくお願い致します。
512 : 名無しさん@お腹 - 2013/09/28(土) 11:46:59.29 (+141,+29,-73)
>>510
マクロのパワーを見せつけられました。

中2女子の私がこのような達人級のコードを書けるようになるには、何をすればよろしいのでしょうか?
まず服を脱ぐのは無しの方向で、お願いします。
513 : 名無しさん@お腹 - 2013/09/28(土) 12:18:52.46 (+52,+29,+0)
まずスク水を着ます
514 : 名無しさん@お腹 - 2013/09/28(土) 12:27:59.85 (+52,+29,-1)
服は着たままスク水着るのか
515 : 504 - 2013/09/28(土) 13:39:46.00 (-1,-29,+0)
ありがとうございます
emacs lisp勉強します
516 : 名無しさん@お腹 - 2013/09/28(土) 15:22:38.81 (+73,+3,-10)
512に emacs
のヘルプのここを見ろというレスは付かないのかな?
517 : 名無しさん@お腹 - 2013/09/28(土) 15:38:34.81 (+68,+27,+1)
>>512

Emacs というより、まずはこんなのかな。

http://www.aoky.net/articles/paul_graham/int.htm
518 : 名無しさん@お腹 - 2013/09/28(土) 16:30:54.44 (+79,+29,-84)
>>512

エセ薩摩人です。
>まず服を脱ぐのは無しの方向で、お願いします。
では、お口でお願いし ... (/ω\)イヤン

ところで本題だが EmacsLisp に限ったことではないが
プログラミングの上達のコツは
 a.自分が欲しい機能をリファレンスを読みながらでも作成してみる
 b.他人が書いたコードを読む(初めは少々短めがお勧め)
あたりかな。

>>516
http://www.emacswiki.org/emacs/EmacsLisp%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
519 : 名無しさん@お腹 - 2013/09/28(土) 19:28:33.77 (+57,+29,-6)
Webカメラがクラックされると簡易的な地獄が顕現しそうなスレだ
520 : 499 - 2013/09/29(日) 01:20:21.88 (+176,-30,-178)
(defun util-encode-region-utf8 ()
(interactive)
(save-excursion
(let ((beg (region-beginning))
(end (region-end)))
(end-of-line)
(insert "\nstatic const char data[] = {\n\t")
(mapc #'(lambda (x) (insert (format "0x%02x, " x)))
(encode-coding-region beg end 'utf-8 t))
(insert "0x00\n};"))))
521 : 名無しさん@お腹 - 2013/09/29(日) 03:13:57.14 (+62,+29,-1)
>>520
わーいありがとう!
姉も喜んでます
522 : エセ薩摩人 - 2013/09/29(日) 06:57:21.56 (+149,+29,-2)
>>520
わーいありがとう!
おいどんのチン●も喜んでます
523 : 名無しさん@お腹 - 2013/09/29(日) 09:34:03.32 (+52,+29,-13)
エセ薩摩人さん、ついにコテハン化w
524 : 名無しさん@お腹 - 2013/09/29(日) 09:57:01.09 (+22,-30,-174)
>>522
簡潔に書き直せば、こんな感じになりそうだね。

(defun util-encode-region-utf8 (b e)
(interactive "r")
(save-excursion
(let ((s (concat (buffer-substring b e) "\0")))
(end-of-line)
(insert
"\nstatic const char data[] = {\n\t"
(mapconcat #'(lambda (x) (format "0x%02x" x))
(encode-coding-string s 'utf-8)
", ")
"\n};"))))
525 : 524 - 2013/09/29(日) 10:05:19.46 (+80,+29,-8)
>>522 でなくて >>520 だったよw
>>520->>522 で笑って、手元が狂ってしまったよw
526 : 名無しさん@お腹 - 2013/09/29(日) 10:43:12.76 (+74,+27,+1)
>>520
おおきに
527 : 510 - 2013/09/29(日) 15:01:35.14 (+16,-30,+0)
>>504
>>510はおかしいところがいくつかあったので修正するよ ついでにもうちょっと汎用的にしてみた
(require 'cl)
;;http://www.gigamonkeys.com/book/macros-defining-your-own.html
(defmacro with-gensyms (names &rest body)
`(let ,(loop for n in names collect `(,n (gensym)))
,@body))

(defmacro cond-case (value &rest body)
(with-gensyms (cand result x)
`(loop for (cand result) in (quote ,body)
when (symbolp cand) for x = (symbol-value cand)
else for x = cand
when (member x `(,value t))
return result)))

(defun case-test2 (value)
(cond-case value
(123 "aaa")
("hoge" "bbb")
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))

(message (case-test2 123))
(message (case-test2 "hoge"))
(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))

>>512 defmacroはon lispが、loopマクロはland of lispがわかりやすいよ emacs lispレファレンスだけだど慣れるまで時間がかかるかも
528 : 名無しさん@お腹 - 2013/09/29(日) 18:32:16.02 (+4,-29,-3)
loop の中身がLISPに見えない件w
529 : 名無しさん@お腹 - 2013/09/30(月) 02:22:05.16 (+7,-29,-74)
>>528
Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。

Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
530 : 名無しさん@お腹 - 2013/09/30(月) 07:14:53.59 (-1,-29,+0)
Spiritはコンパイルするのがイヤになる
531 : 名無しさん@お腹 - 2013/09/30(月) 08:05:41.61 (+0,-29,-7)
>>529
>Loop言語は

!!!
loop はDSLだと思えばよかったのですね。その発想はなかったです。
532 : 名無しさん@お腹 - 2013/09/30(月) 12:48:36.98 (+26,-1,+0)
loop 好きだけどアンチも多いらしい
533 : 名無しさん@お腹 - 2013/09/30(月) 15:11:53.81 (+57,+29,-24)
デバッグが必要になった場合の手間考えると、展開結果が複雑になるようなマ
クロは使わない方が得策だと思う。
534 : 名無しさん@お腹 - 2013/09/30(月) 15:30:40.24 (+57,+29,-35)
そのマクロが正しく動くことが保証されてたら大丈夫じゃない?
535 : 名無しさん@お腹 - 2013/09/30(月) 16:21:25.84 (+24,-29,-8)
Emacs でマクロ否定って Emacs を否定してるようなもんじゃん。
Editor MACroS なめんなよ。
536 : 名無しさん@お腹 - 2013/09/30(月) 17:01:41.30 (+54,-21,-32)
elispのloopマクロで面白いものがあれば知りたい
537 : 名無しさん@お腹 - 2013/09/30(月) 17:06:46.61 (+47,+20,-10)
>>535
マクロ違い
538 : 名無しさん@お腹 - 2013/10/01(火) 08:43:04.22 (+31,-29,-4)
これの6章にediting macrosについて書いてある
http://haleakala-avenue.style.coocan.jp/lealea/
539 : 名無しさん@お腹 - 2013/10/01(火) 08:47:34.26 (+0,-30,-82)
>>536
Common lispのloopマクロをelispで動くようにしたものなんだよね
Land of Lisp 10章のLoopマクロ周期表がおすすめ
540 : 名無しさん@お腹 - 2013/10/01(火) 09:52:35.10 (-1,-29,-41)
ANSI Common Lisp によるとだな
規格でも loop は定義しきれてないってさ
実際 sbcl で動く loop が clisp でコケたりする
541 : 名無しさん@お腹 - 2013/10/01(火) 14:32:07.83 (+9,-30,-241)
http://orgmode.org/worg/exporters/ox-overview.html
ここにあるox-texinfoを使って.org->.texiに、
さらにtexi2htmlで.texi->.htmlに変換したら
元の.orgで#+authorで設定していたその設定が失われてしまうようで
This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
となってしまいます
.org->.htmlであれば問題なくauthor情報が引き継がれているのですが、どうすれば引き継げるのでしょうか

orgファイルはこう書いています
#+TITLE: Org-mode test
#+AUTHOR: test-name

* hello

- world
542 : 名無しさん@お腹 - 2013/10/01(火) 17:04:44.91 (+37,-30,-56)
>>541
> This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82

それで正しいのだと思うが
543 : 名無しさん@お腹 - 2013/10/01(火) 17:32:22.04 (+62,+29,-3)
>>538
こんなのがあったとは。
RMS信者の私はただいま絶賛感動中です。
544 : 名無しさん@お腹 - 2013/10/01(火) 22:48:31.45 (+66,+29,-9)
>>504
なんだかすごいことになっているような気もするが
君がやりたいことへの最短距離は cond を使うことだと思うぞ
545 : 名無しさん@お腹 - 2013/10/02(水) 00:38:41.21 (+33,+1,-19)
サルでも完全理解loopマクロ講座を誰か書いてくれ
546 : 名無しさん@お腹 - 2013/10/02(水) 07:08:14.10 (+14,-18,-35)
case に関連して、

http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html

ここの最後、

「記号を直接指定すると、記号が評価されてしまうということに注意しなけれ
ばなりません。そのため、リストに記号を指定するか、quote や ' によって明
示的に記号型の値そのものを与えなければならないのです。」

って本当ですか?誰か common lisp に詳しい人教えて。
547 : 名無しさん@お腹 - 2013/10/02(水) 08:22:39.45 (+3,-30,-32)
記号tやnilは直接指定すると
tはotherwiseにnilは空リストに解釈されてしまうから、
tやnilと直接比較したい場合には
クォートするかリストにいれる必要があるよって意味じゃないの?
tやnilじゃなければシンボルは評価されないと思うけどね
548 : 名無しさん@お腹 - 2013/10/02(水) 09:28:13.09 (+2,-29,-2)
>>545
Common Lisp loop でぐぐればいろいろある
549 : 名無しさん@お腹 - 2013/10/02(水) 12:47:25.54 (+47,+0,-32)
まったく、いつになったらEmacsは縦書に対応してくれるのか!
Emacs18 の頃から待ってるのに。ぷんぷん!
550 : 名無しさん@お腹 - 2013/10/02(水) 13:14:23.42 (+47,+24,-14)
縦書きelispってあったような。
←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / emacs スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

類似してるかもしれないスレッド


トップメニューへ / →のくす牧場書庫について