トップページunix
1001コメント307KB

Emacs Part 44

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2013/12/14(土) 17:36:04.45
語り合いましょう。

GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/

EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/

前スレ
Emacs Part 43
http://toro.2ch.net/test/read.cgi/unix/1370754332/
0002名無しさん@お腹いっぱい。2013/12/14(土) 19:16:51.50
emacsを算数のお道具箱に
imaxima,
gnuplot,
reduce,
octave,
sage,
macaulay2,
mathematica
が動く様になった
幸せ〜
0003名無しさん@お腹いっぱい。2013/12/14(土) 22:37:52.92
新スレ乙
0004名無しさん@お腹いっぱい。2013/12/15(日) 16:35:33.84
      ____∩_∩
  〜/        ・ ・\
   (          ∀   )  <ぼく、4ゲット君
    \/\/\/\/
0005名無しさん@お腹いっぱい。2013/12/15(日) 21:18:40.55
正規表現の質問です
(setq test "/*
/* test */
*/

foo

/*
foo
*/")
testの /* */ 内を取り除こうとして
(replace-regexp-in-string "/\\*\\(.\\|\n\\)+?\\*/" "" test)
と書いたら


*/

foo
と一部の */ が残ってしまいました。バックスラッシュの付け方に誤りがあるかと思いましたがよくわかりません。
0006名無しさん@お腹いっぱい。2013/12/15(日) 21:44:42.98
一つめの部分で、外側のコメント開始から内側のコメント終了までにマッチしてるんだよ。
基本的に正規表現は入れ子に対応するのが難しい。
0007名無しさん@お腹いっぱい。2013/12/16(月) 14:44:16.72
;; assoc の引数が1以外だとdata1が書き換えられる。
(setq data1 '((1 . 1)(2 . 2)(3 . 3)))
(let ((data2 data1))
(setq data2 (delete (assoc 1 data2) data2)))

これは仕様なのでしょうか。
0008名無しさん@お腹いっぱい。2013/12/16(月) 14:59:23.76
>>7
delete はリストに対しては破壊的な操作を行うので仕様的に正しいです。

あとは、data2 に data1 の値を設定してるけど、リストの先頭の位置の値をコピーしてるだけなので
data2 の指すリスト自体を作り替えた場合 data1 が指してるリストも同じなので影響を受けます。

'((1 . 1) (2 . 2) (3 . 3)) に対して (1 . 1) の delete を行った場合、
'((1 . 1) . ((2 . 2) . ((3 . 3)))) の ((2 . 2) . ((3 . 3))) の部分が戻されるだけでリストは壊されず、
data1 は相変わらず先頭をさしたままなので何事も影響ないような感じになるけど
(2 . 2) とかの先頭じゃない部分の delete の場合、'((1 . 1) . ((3 . 3))) にリストが繋ぎ変えられるので。
■ このスレッドは過去ログ倉庫に格納されています