元スレEmacs Part 43
emacs覧 / PC版 /みんなの評価 :
501 = :
>>499
おいどんも、コードを貼ってくれることを
希望するでごわす。
502 = :
>>499
高校二年女子です。
わたしからもお願いします。
503 = :
しかたないにゃあ・・・
504 = :
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 = :
caseを使ってるとこが
506 = :
ミニバッファまわりのキーバインドってなんでああも治外法権状態なん?
「お前のglobal-mapなんぞ知るかボケェ!」な奴多すぎだろ
507 = :
>>504
高校二年女子です。
まずは、case-test関数をedebug-defunして、ご自分のされていることを確認されたほうがよろしいかと思います。
それと、'g++ -v'そのままではなく、regexで引っ掛ける等しないと、このままではどうしようもないかと。
509 = :
>>507
501のエセ薩摩人です。
499氏がコードを貼り付けなかったら
おいどんと付き合ってください。
510 = :
>>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 = :
>>509
47歳男子です。
ありがとうございます。今後ともどうぞよろしくお願い致します。
512 = :
>>510
マクロのパワーを見せつけられました。
中2女子の私がこのような達人級のコードを書けるようになるには、何をすればよろしいのでしょうか?
まず服を脱ぐのは無しの方向で、お願いします。
513 = :
まずスク水を着ます
514 = :
服は着たままスク水着るのか
516 = :
512に emacs
のヘルプのここを見ろというレスは付かないのかな?
517 = :
>>512
Emacs というより、まずはこんなのかな。
http://www.aoky.net/articles/paul_graham/int.htm
519 = :
Webカメラがクラックされると簡易的な地獄が顕現しそうなスレだ
521 = :
>>520
わーいありがとう!
姉も喜んでます
522 = :
>>520
わーいありがとう!
おいどんのチン●も喜んでます
523 = :
エセ薩摩人さん、ついにコテハン化w
525 = :
>>522 でなくて >>520 だったよw
>>520->>522 で笑って、手元が狂ってしまったよw
526 = :
>>520
おおきに
527 = :
>>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 = :
loop の中身がLISPに見えない件w
529 = :
>>528
Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。
Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
532 = :
loop 好きだけどアンチも多いらしい
533 = :
デバッグが必要になった場合の手間考えると、展開結果が複雑になるようなマ
クロは使わない方が得策だと思う。
534 = :
そのマクロが正しく動くことが保証されてたら大丈夫じゃない?
535 = :
Emacs でマクロ否定って Emacs を否定してるようなもんじゃん。
Editor MACroS なめんなよ。
536 = :
elispのloopマクロで面白いものがあれば知りたい
537 = :
>>535
マクロ違い
538 = :
これの6章にediting macrosについて書いてある
http://haleakala-avenue.style.coocan.jp/lealea/
541 = :
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 = :
>>541
> This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
それで正しいのだと思うが
543 = :
>>538
こんなのがあったとは。
RMS信者の私はただいま絶賛感動中です。
544 = :
>>504
なんだかすごいことになっているような気もするが
君がやりたいことへの最短距離は cond を使うことだと思うぞ
545 = :
サルでも完全理解loopマクロ講座を誰か書いてくれ
546 = :
case に関連して、
http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html
ここの最後、
「記号を直接指定すると、記号が評価されてしまうということに注意しなけれ
ばなりません。そのため、リストに記号を指定するか、quote や ' によって明
示的に記号型の値そのものを与えなければならないのです。」
って本当ですか?誰か common lisp に詳しい人教えて。
547 = :
記号tやnilは直接指定すると
tはotherwiseにnilは空リストに解釈されてしまうから、
tやnilと直接比較したい場合には
クォートするかリストにいれる必要があるよって意味じゃないの?
tやnilじゃなければシンボルは評価されないと思うけどね
548 = :
>>545
Common Lisp loop でぐぐればいろいろある
549 = :
まったく、いつになったらEmacsは縦書に対応してくれるのか!
Emacs18 の頃から待ってるのに。ぷんぷん!
550 = :
縦書きelispってあったような。
みんなの評価 :
類似してるかもしれないスレッド
- Emacs Part 40 (1001) - [92%] - 2012/9/7 0:30
- Emacs Part 47 (995) - [92%] - 2015/4/19 13:01
- Emacs Part 42 (1001) - [92%] - 2013/6/9 5:15 △
- Emacs Part 44 (1001) - [92%] - 2014/2/8 8:01 △
- Emacs Part 53 (989) - [92%] - 2022/12/5 12:45
- Emacs Part 46 (984) - [92%] - 2014/12/24 14:15
- Emacs Part 45 (1001) - [92%] - 2014/6/23 9:45
- Emacs Part 48 (997) - [92%] - 2015/12/9 15:15
- Emacs Part 49 (974) - [92%] - 2016/12/7 9:45
- Emacs Part 33 (1001) - [92%] - 2010/3/9 20:01 ○
- Emacs Part 41 (1001) - [92%] - 2012/12/24 4:15
- Emacs Part 32 (1001) - [84%] - 2009/12/20 2:04 ○
- Emacs Part 31 (1001) - [84%] - 2009/10/23 10:31 ○
- Emacs part 23 (1001) - [84%] - 2008/2/8 0:04 ☆
トップメニューへ / →のくす牧場書庫について