1 名前:デフォルトの名無しさん [2007/04/20(金) 19:41:39 ] Lisp全般のスレです 過去スレ Part16: pc11.2ch.net/test/read.cgi/tech/1172404795/ Part15: pc10.2ch.net/test/read.cgi/tech/1151025773/ Part14: pc8.2ch.net/test/read.cgi/tech/1132275726/ Part13: pc8.2ch.net/test/read.cgi/tech/1115901841/ Part12: pc8.2ch.net/test/read.cgi/tech/1100229366/ Part11: pc5.2ch.net/test/read.cgi/tech/1091456033/ Part10: pc5.2ch.net/test/read.cgi/tech/1075630259/ Part9: pc2.2ch.net/test/read.cgi/tech/1069594582/ http://が多すぎるらしいので分割
477 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 09:42:05 ] R6RSって出ないんじゃなかったっけ?
478 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 09:48:50 ] じゃR7RSで
479 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:22:37 ] もうR2D2でいいよ。
480 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:29:12 ] むしろR2D2の方がいいよ
481 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:34:26 ] 100万言語に対応してるんだっけ?
482 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:34:41 ] schemeから派生した言語って何かありますか? luaがそれっぽいですが
483 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 22:56:26 ] Tとか
484 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 23:14:15 ] 4/1にc.l.lでr7rsは発布されとったよ。w groups.google.co.jp/group/comp.lang.scheme/browse_thread/thread/8fa8814b5c16eae4/b14cda30a53bc8f7
485 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 00:29:39 ] luaはべつにschemeと関係ないよ
486 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:02:59 ] このスレ住人としてluaの存在ってどうよ 末尾再帰とかゲームで採用されたりとかむかつかね? しめとくか?
487 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 04:14:07 ] schemeも採用すればよかんべ。
488 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:21:59 ] schemeがシェルに採用されたMonaOSが話題にならない件
489 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 05:52:53 ] Scheme流行りの昨今
490 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 06:00:40 ] Schemeは黒板専用言語のくせになまいきだな
491 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 08:54:57 ] 確かにリリカルLispは黒板使ってたなww
492 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 10:59:04 ] >>486 むかつく理由が理解できない
493 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 15:20:35 ] >>486 は常に敵を探しているタイプ
494 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 17:36:51 ] 小鳥みたいですね
495 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 19:36:20 ] 歌が好きだったりしますか?
496 名前:デフォルトの名無しさん mailto:sage [2007/05/30(水) 20:33:49 ] >>495 俺が好きなのは君だけさ
497 名前:デフォルトの名無しさん [2007/05/31(木) 11:09:22 ] read-from-stringは多値を返すのですが、 それぞれを別の変数に入れる方法はありますか? (read-from-string "459") 459 3 たとえば xとyに 459と3を入れる方法が知りたいです。
498 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:27:35 ] >>497 multiple-value-bind
499 名前:デフォルトの名無しさん [2007/05/31(木) 11:32:57 ] >>498 ありがとう 失礼ですが、LISP暦は何年でしょうか?
500 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 11:35:49 ] multiple-value-bind とか multiple-value-setq とか。 CL-USER> (multiple-value-bind (x y) (read-from-string "459") (list x y)) (459 3) CL-USER> (multiple-value-setq (x y) (read-from-string "459")) 459 CL-USER> x 459 CL-USER> y 3
501 名前:デフォルトの名無しさん [2007/05/31(木) 12:55:18 ] letでレキシカル変数(LISPでは何?)として定義したhyoを成功のパターンで試すと正しくできますが、 失敗パターンのように要素?を""で囲むと正しく取得できません。 要素を""で囲っても正しく表引きしたいのですがLISPではどうするのでしょうか? ;=== 成功 === (let ( (hyo '((A 80) (B 70) (C 100)))) (print (assoc 'A hyo)) "OK" ) ○結果 (A 80) "OK" ;=== 失敗 === (let ( (hyo '(("A" 80) ("B" 70) ("C" 100)))) (print (assoc "A" hyo)) "OUT" ) ×結果 nil "OUT" まだよくわかっていないのですが、 ""とすると文字列限定される?ということでしょうか?
502 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:13:22 ] (assoc "A" hyo :test 'equal)
503 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:16:53 ] assocは普通はequal比較だから同じ文字列なら見つかると思うのだが、 数あるlisp方言の中にはそうでないのもあるのかな? ちなみにemacs lispで実行してみたらこうなった。 (let ( (hyo '(("A" 80) ("B" 70) ("C" 100)))) (print (assoc "A" hyo)) "OUT" ) ("A" 80) "OUT" 使ってる処理系が何かを示せばより的確な回答を返せる人がいるかもね。
504 名前:デフォルトの名無しさん [2007/05/31(木) 13:16:56 ] >>502 ありがとう 皆さん、簡単に答えますね。 うらやましいです。
505 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 13:22:59 ] 'eaualより#'equalの方がいくない?
506 名前:デフォルトの名無しさん [2007/05/31(木) 13:41:37 ] >>503 えー、初心者危険 ちなみに xyzzyです。
507 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 14:07:30 ] >>505 なぜ?
508 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 21:46:17 ] >>499 エディタのカスタマイズ以外にはあんまり使ってないけど三年ちょっとぐらい >>503 Common Lisp だと eql だよ
509 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 22:20:34 ] eq? アドレスの一致 eqv? 値の一致 equal? 構造の一致 文字列の一致に使えるのって なんとなくeqv?かと思ったけど違うのね。 eqv?の立ち位置って微妙じゃね? 文字列もアトムと考えればeqv?で良い気がするけど。
510 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 22:23:46 ] >>507 わずかに速い気がする
511 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 22:28:07 ] >>508 すまん、普段emacs lispとschemeしか使わないのでCommon Lispの ことがすっかり頭から抜け落ちていた
512 名前:デフォルトの名無しさん mailto:sage [2007/05/31(木) 23:32:42 ] >>509 文字列も場所の列だからベクタと同じ扱いなんじゃなかろうか string-set! とかあるし
513 名前:デフォルトの名無しさん [2007/05/31(木) 23:51:57 ] あと二次元配列 O(1)でアクセスできるタイプ(効率重視)で perlで以下のことがLISPではどのように書くのでしょうか? *定義 $cell['A'][1] = ('国語' 100) <-- Lispのリスト $cell['A'][2] = ('算数' 20) <-- Lispのリスト $cell['A'][3] = ('理科' 30) <-- Lispのリスト $cell['B'][1] = ('家庭科' 90) <-- Lispのリスト *呼び出し % print $cell['A'][2]; ['算数', 20]
514 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:02:00 ] >>513 なんか日本語がよくわからないんだが、 多次元配列なら aref に次元の数だけ引数を渡す (aref #2A((1 2 3) (4 5 6)) 1 2) => 6 ところで多次元配列って Lisp では使ったことないんだけど、どういう時使う?
515 名前:デフォルトの名無しさん [2007/06/01(金) 00:15:09 ] >多次元配列って Lisp では使ったことないんだけど、どういう時使う? まだ構文を覚えている最中で、どういう時に使うかまだでは考えていなかったのです。 LISPでは、多次元配列という考え方でなく別の方法で対処しているということでしょうか? LISPらしい書き方を学ぶにはどうしたら良いのでしょうか? 私はPerlはかじっておりますので、perlと対比できたらわかりやすいです。 #2Aは何を意味するのでしょうか?2はニ次元Aは???? #3Bにしたらエラーになりました。
516 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:21:36 ] ちょっとは調べろよwww
517 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 00:30:49 ] >>514 ベタな例だけど行列とか
518 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:04:32 ] ある処理系での多次元配列の例 CL-USER>(make-array '(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) #20A((((((((((((((((((((0))))))))))))))))))))
519 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:08:02 ] 20次元配列とかw まあ、全て2要素にした程度でも凄いサイズになるけどな。 扱えないレベルではないけど。
520 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:13:53 ] >>501-503 Hyperspecに答えが書いていたね。 www.lisp.org/HyperSpec/Body/fun_assoccm_a_assoc-if-not.html のexamplesをみてみて。
521 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 01:18:38 ] >>514 一番ありがちなのは lispで行列計算をしている場合。ライフゲームなどの 2次元空間グラフィック。そんなところじゃないのか
522 名前:デフォルトの名無しさん [2007/06/01(金) 04:04:33 ] schemeでany や every は any? every?じゃないんだな。
523 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 05:33:21 ] (any hoge? ...) という使い方になるわけだから俺には違和感ないな。
524 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 05:38:40 ] anyはブール値を返すわけじゃないからじゃね?
525 名前:デフォルトの名無しさん mailto:sage [2007/06/01(金) 06:49:57 ] for-all、existsとの違いがイマイチ
526 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 20:21:56 ] このスレのレベルが急速に低下してるな……
527 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 20:25:51 ] ...and justice for all
528 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 22:25:07 ] 関数型系の複数のスレに、全く同じレス付けてる >>526 って何なの?
529 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 22:46:56 ] >>527 '((justice is lost) (justice is raped) (justice is gone))
530 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 23:21:29 ] >>528 休みの日にデパートの屋上から路上を眺めるのが趣味の人なんじゃないの
531 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 23:34:40 ] 今の時代なら、休みの日にgoogleで海岸とかプールを拡大して 凝視してる人だろ
532 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 23:48:09 ] LIVE映像じゃないと、ちょっと行為としてしっくりこない気がする。
533 名前:デフォルトの名無しさん mailto:sage [2007/06/02(土) 23:51:27 ] では、ライブカメラを漁ってる人
534 名前:デフォルトの名無しさん [2007/06/03(日) 16:55:16 ] Lispは型推論を持たない
535 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 16:55:45 ] 唐突にどうしたんだぜ?
536 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 17:16:00 ] ヒント:日曜日
537 名前:デフォルトの名無しさん [2007/06/03(日) 17:37:08 ] >>536 正解!
538 名前:デフォルトの名無しさん [2007/06/03(日) 18:34:02 ] LISPに ne 等しくないという等号はありますか?
539 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 18:44:09 ] (defun ne (x y) (not (eq x y)))
540 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:04:01 ] 「等しくないという等号」にすげぇ違和感
541 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 19:09:59 ] そうですね はい次。
542 名前:デフォルトの名無しさん [2007/06/03(日) 23:27:36 ] pushすると ("C" "B" "A")となりますが 例えば、 (def test(x lst) ... ) (setq lst '()) (test "A" lst) (test "B" lst) (test "C" lst) (print lst) で("A" "B" "C")とするには、どのようにtest関数を作ればよいのでしょうか? pushした後 reverseせず、純粋に("A" "B"..というリストを作りたいです。
543 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 23:35:57 ] >pushすると >("C" "B" "A")となりますが なりませんでした はい次。
544 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 23:40:12 ] >>542 何故そんなに push を嫌うのか分からん
545 名前:デフォルトの名無しさん mailto:sage [2007/06/03(日) 23:45:09 ] rplacdでマクロ作ればいいんじゃね
546 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:17:17 ] push して nreverse が一番効率いいと思うがな
547 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:42:34 ] 誰一人>>543 の仕切りに従ってない点について。
548 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:49:08 ] そりゃー2chだもの
549 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:54:11 ] 拝啓547様 正しいマナーが根付くには時間がかかるものです。 悪癖は容易には正されません。 円滑なスレ進行のため今後も努力する所存です。 543
550 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 00:55:35 ] うまく人を逆撫でできる人は自分の話題に持ち込めるけど、 単なる阿呆、とだけ思われてオシマイだと、うち捨てられて終わりなんだよね。
551 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 03:29:47 ] >>542 君が欲しいのはこんな感じのものでは? (defmacro test (x lst) `(setq ,lst (append ,lst (list ,x)))) でも>>546 の言うとおり、pushしてnreverseのほうがたぶん速いよ。
552 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 04:08:00 ] 多分 queue が使いたいんじゃないかなーと思った。
553 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 13:51:23 ] Common Lispらしいという意味ではfill pointer付きarrayという手もあるな。使ったことないけど。
554 名前:デフォルトの名無しさん mailto:sage [2007/06/04(月) 21:13:09 ] >>553 コンシングを減らすために使ってみたことあるよ。 おれがヘボなせいかあんま高速化しなかったけどorz cl-user(5): (setq vec (make-array 10 :fill-pointer 0 :adjustable t)) #() cl-user(6): (vector-push "a" vec) 0 cl-user(7): (vector-push "b" vec) 1 cl-user(8): (vector-push "c" vec) 2 cl-user(9): vec #("a" "b" "c") cl-user(10): (concatenate 'list vec) ("a" "b" "c")
555 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 00:50:01 ] >>542 それはマクロでやると簡単。 (defmacro test (x lst) `(setf ,lst (append ,lst (list ,x))))
556 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 01:02:27 ] 既にでてたorz.
557 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 03:19:49 ] nreverseの方が早いっていうのは appendが新しいリストをconsセル一つ一つつなげて返すのに対して nreverseは元のリストを破壊操作で処理するからって言うことで正しいですか?
558 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 07:17:24 ] 最後に付け加えるのが時間かかるってことじゃない? nreverse なら cons セルのつなげかえをするだけなので O(n) なのに対して、 リストの最後に付け加えていくのはリストが長くなるほど たどる量が増えて O(n^2) になる、っていうことだと思う。
559 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 14:06:30 ] FreeBSD6.2RELEASEでGauche0.8.7をつかっています。 (inc (dec inc))と(1 2 3)を入力として与えると (2 (1 4))を返すような関数が欲しいんですけど、 なんか既にあるような気がします。 こ存じないですか?
560 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 14:16:59 ] (define (foo x y) '(2 (1 4)))
561 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 15:58:34 ] そんな変な関数ある気がしないw
562 名前:559 mailto:sage [2007/06/05(火) 16:20:06 ] そうですか… リストを構造体に見立てて、 別の構造体に変換するような操作は結構あるような気がしたんですが… だとすると俺のやりかたが間違っているんだろうか。 ちょっと違う形になりましたけど、とりあえず書いたもんさらしてみます。 (define (general-apply syn args) (eval `(,syn ,@args) (interaction-environment))) (define (data-convert index record convert-rule) (general-apply 'let (list (zip index record) convert-rule)) ) で、 (data-convert '(a b c) '(1 2 3) '(list (inc a) (list (dec b) (inc c)))) みたいな使い方をします。
563 名前:デフォルトの名無しさん mailto:sage [2007/06/05(火) 16:27:00 ] いまいちよくわからないんだけどutil.matchみたいなことを考えているのかな。 practical-scheme.net/gauche/man/gauche-refj_163.html#SEC435
564 名前:559 mailto:sage [2007/06/05(火) 17:31:16 ] >563 おお、なんかこれでよさそうです。 ありがとうございました。
565 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 16:24:42 ] wilikiのスタイルシートってcgiと同じディレクトリにおけばいいの? 全然うごいてくれない
566 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 17:15:18 ] 吐かれたHTML読んでみたら?
567 名前:デフォルトの名無しさん mailto:sage [2007/06/08(金) 20:38:12 ] >>565 キーワード引数で :style-sheet のとこにスタイルシート名を指定すること。
568 名前:565 mailto:sage [2007/06/10(日) 14:51:28 ] 結局解決できませんでした しかたないのでpukiwikiをインストールします
569 名前:デフォルトの名無しさん mailto:sage [2007/06/10(日) 15:02:04 ] うんそれがいいよ
570 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:38:23 ] (if (解決-p 565) (install wiliki) (install pukiwiki)) 残念。。
571 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:56:25 ] pukiwikiをschemeで書き直せばいいじゃん
572 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 00:59:38 ] ウッキ、ウッキ、ウィッキー
573 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 01:01:44 ] わかったよブービー(´・ω・`)
574 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 01:03:49 ] ウィッキーさん元気してるかね? なつかしすなー
575 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 04:45:52 ] ウィッキー→みのもんた だと思ってた時期が(ry
576 名前:デフォルトの名無しさん mailto:sage [2007/06/12(火) 21:31:35 ] ウィッキーは落語家のえーっと鶴なんとか
577 名前:デフォルトの名無しさん [2007/06/13(水) 21:15:05 ] (define port (open-input-file "c:\\tmp\\data.txt") (define line (read-line port)) (append lst (line)) テキストファイルから、一行ずつ読み込んでリストに加えて行くという処理を書いてるのですが、 3行目の(line)でエラーになります。 こういう場合、どう書けばいいんでしょう?