[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2chのread.cgiへ]
Update time : 05/09 19:46 / Filesize : 220 KB / Number-of Response : 1002
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

Lisp Scheme Part17



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)でエラーになります。
こういう場合、どう書けばいいんでしょう?







[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<220KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef