[表示 : 全て 最新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://が多すぎるらしいので分割

461 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:29:23 ]
define-macroでできるだろ

462 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:30:37 ]
>>460
うわぁ、古い方の過去ログは読んだのですが、最近のは読んでませんでした。
全く同じですね。
syntax-case使うなら、やっぱりchezでしょうか?
私は主にmzschemeかscheme48かGambit-Cなので、syntax-caseはmzschemeしか使えないし、
chezのものとは少し違うようなので、
ポータビリティを考えたらCL的マクロに逃げるのがベターか、などと考えてます。

あまり関係ありませんが、Gambit-Cのsyntax-rulesを使えるようにするファイルは、syntax-caseが使えないのになんでsyntax-case.scmなのでしょうね。

463 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:31:31 ]
>>461
もちろん、CL的アプローチでは簡単です。
標準仕様の範囲でできるかどうか、という問題です。

464 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:49:36 ]
syntax-caseで書くならこんなカンジか?

(define-syntax define&
(lambda(x)
(syntax-case x ()
((k sym obj)
(with-syntax
((s
(datum->syntax-object (syntax k)
(eval (syntax-object->datum (syntax sym))
(interaction-environment)))))
(syntax (define s obj)))))))

petite chez schemeで試してみたが、こういうテストケースでは動くことを確認した。

(define& (string->symbol (string-append "a" "b")) 1)
ab ;-> 1

結局のところ、今はschemeに足りないところがあるのはそのとおりだと思う。
でもな、完成されたものを使うだけってつまらないと思うわけ。
マクロに関しても色んな提案があってそれぞれ細かい部分で利点も問題点もかかえてて、
それがどう収束していくかってなかなか面白いことじゃないか。
ま、仕事で使うならそうもいってられんのだろうが。

465 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:05:51 ]
仕事で Scheme 使っている人ってここにいるんですかね

466 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:10:20 ]
使ってた。納品物ではなく自家ツール用だけど。最近はCommon Lispのほうが多い。

467 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 00:11:34 ]
>>464
あなたのプログラムを見て初めて私のsyntax-caseがうまく動かなかった理由が分かりました!
ありがとうございました。

IBMにあるメタプログラミング技法を読んでsyntax-caseを勉強したのですが、
datum->syntax-objectの第1引数の(syntax k)のkはマクロ名にマッチする識別子だったんですね。
syntax-rulesではマクロ名にマッチした識別子は特に使い道がなかったので気がつきませんでした。

468 名前:464 ◆3.JjF77I26 mailto:sage [2007/05/28(月) 00:26:11 ]
>>467
ここにsrfi-93の日本語訳があるぞ。
www.katch.ne.jp/~leque/translations/srfi-93/srfi-93j.html

> 手続き datum->syntax は引き数として、
> テンプレート識別子 template-id と任意の値 datum のふたつをとる。
>
> (datum->syntax template-id datum)
>
> この手続きは template-id と同一の文脈情報をもつ、
> datum の構文オブジェクト表現を返す。 このとき、
> この構文オブジェクトは datum (訳注: template-id か)が
> 挿入されたのと同時にコードに挿入されたかのようにあつかわれる。

schemeのマクロではただシンボルを置き換えればいいってもんじゃなく、
文脈がからんでくるってこと。
ところでこの文書ではdatum->syntaxってなってるけど、
chez schemeを含むいくつかの系ではdatum->syntax-objectって名前なので注意。

469 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:05:53 ]
>>468
ありがとうございます。
読んでみました。
いろいろ勘違いしているところもありました。
しばらくsyntax-caseの勉強に励もうと思います。



470 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 13:38:52 ]
462でGambit-Cはsyntax-caseが使えないと書きましたけど
ちゃんと使えますね。
なぜか勘違いしてたみたいです。

471 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 18:02:01 ]
syntax-caseて処理系に依存するの?

472 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:38:39 ]
syntax-case 面倒臭すぎる
阿呆な質問なんだが scheme にも cl のパッケージの概念導入
できないものなんだろうか…?何か問題でもあるの?

473 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 00:39:19 ]
srfi を書いて提案しましょう

474 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 01:05:37 ]
Mona OS が関数型言語 Scheme のシェルを搭載してリリース
slashdot.jp/articles/07/05/28/1225254.shtml

475 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 01:41:35 ]
>>472
schemeでは名前空間を分離しない(?)原則みたいなのがあるとかなんとか言ってなかっったっけ?

476 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 07:30:57 ]
R6RSに入るんじゃなかった?>パッケージもどき

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






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

前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