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

みんなの評価 :
レスフィルター : (試験中)
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"))
全て"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"))
ミニバッファまわりのキーバインドってなんでああも治外法権状態なん?
「お前のglobal-mapなんぞ知るかボケェ!」な奴多すぎだろ
「お前のglobal-mapなんぞ知るかボケェ!」な奴多すぎだろ
>>504
高校二年女子です。
まずは、case-test関数をedebug-defunして、ご自分のされていることを確認されたほうがよろしいかと思います。
それと、'g++ -v'そのままではなく、regexで引っ掛ける等しないと、このままではどうしようもないかと。
高校二年女子です。
まずは、case-test関数をedebug-defunして、ご自分のされていることを確認されたほうがよろしいかと思います。
それと、'g++ -v'そのままではなく、regexで引っ掛ける等しないと、このままではどうしようもないかと。
g++ -vよりg++ --versionの方が一行目にバージョンが来るからいじりやすいと思う
>>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"))
>>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"))
ありがとうございます
emacs lisp勉強します
emacs lisp勉強します
>>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
エセ薩摩人です。
>まず服を脱ぐのは無しの方向で、お願いします。
では、お口でお願いし ... (/ω\)イヤン
ところで本題だが 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
(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};"))))
(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};"))))
>>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};"))))
簡潔に書き直せば、こんな感じになりそうだね。
(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};"))))
>>520
おおきに
おおきに
>>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レファレンスだけだど慣れるまで時間がかかるかも
>>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
Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。
Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。
Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
デバッグが必要になった場合の手間考えると、展開結果が複雑になるようなマ
クロは使わない方が得策だと思う。
クロは使わない方が得策だと思う。
Emacs でマクロ否定って Emacs を否定してるようなもんじゃん。
Editor MACroS なめんなよ。
Editor MACroS なめんなよ。
>>535
マクロ違い
マクロ違い
これの6章にediting macrosについて書いてある
http://haleakala-avenue.style.coocan.jp/lealea/
http://haleakala-avenue.style.coocan.jp/lealea/
ANSI Common Lisp によるとだな
規格でも loop は定義しきれてないってさ
実際 sbcl で動く loop が clisp でコケたりする
規格でも loop は定義しきれてないってさ
実際 sbcl で動く loop が clisp でコケたりする
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
ここにある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
>>541
> This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
それで正しいのだと思うが
> This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
それで正しいのだと思うが
case に関連して、
http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html
ここの最後、
「記号を直接指定すると、記号が評価されてしまうということに注意しなけれ
ばなりません。そのため、リストに記号を指定するか、quote や ' によって明
示的に記号型の値そのものを与えなければならないのです。」
って本当ですか?誰か common lisp に詳しい人教えて。
http://wisdom.sakura.ne.jp/programming/lisp/clisp11.html
ここの最後、
「記号を直接指定すると、記号が評価されてしまうということに注意しなけれ
ばなりません。そのため、リストに記号を指定するか、quote や ' によって明
示的に記号型の値そのものを与えなければならないのです。」
って本当ですか?誰か common lisp に詳しい人教えて。
記号tやnilは直接指定すると
tはotherwiseにnilは空リストに解釈されてしまうから、
tやnilと直接比較したい場合には
クォートするかリストにいれる必要があるよって意味じゃないの?
tやnilじゃなければシンボルは評価されないと思うけどね
tはotherwiseにnilは空リストに解釈されてしまうから、
tやnilと直接比較したい場合には
クォートするかリストにいれる必要があるよって意味じゃないの?
tやnilじゃなければシンボルは評価されないと思うけどね
>>545
Common Lisp loop でぐぐればいろいろある
Common Lisp loop でぐぐればいろいろある
まったく、いつになったらEmacsは縦書に対応してくれるのか!
Emacs18 の頃から待ってるのに。ぷんぷん!
Emacs18 の頃から待ってるのに。ぷんぷん!



類似してるかもしれないスレッド
- 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 ☆
トップメニューへ / →のくす牧場書庫について