- 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://が多すぎるらしいので分割
- 449 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:33:48 ]
- これがそんなにキモイか?
define (fac x) if (= x 0) 1 * x fac (- x 1) じゃあこうしよう define (fac x) { if (= x 0) { 1 (* x) } { fac (- x 1) } }
- 450 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:40:56 ]
- K&R派なオレはそのifの書き方見るとイライラしてくるんだよねw
- 451 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:44:10 ]
- >>449
{ } の代わりに ( ) にしてみてもいいかも
- 452 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:47:59 ]
- >>449
どうでもいいが式が間違ってるぞ まあ前者はインデントが浅すぎでキモく見えるだけじゃないのか?
- 453 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:52:20 ]
- インデント文法で一番有名なPythonは20年後はもう衰退していると思うが、
この手法はSchemeと一緒に30年後も生き残っていそう。 それで、インデント文法はSchemeが元ネタだ! と騒ぐ信者が出現
- 454 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 16:55:51 ]
- >>442
山口百恵のロックンロールウィドウもよろしく
- 455 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:28:34 ]
- Schemeのマクロについてなんですけど、
本体の展開よりも引数の評価を先にするようなトリックってありませんかね? 構造体を定義するマクロを自分でも書いてみようと思ったんですけど、 構造体名structure-nameを与えられてmake-structure-nameという名前の関数を定義する事さえ難しいという現実に直面してしまいました。 グローバル定義だけならevalでお茶を濁す手もあるんですが… R6RSで導入予定というsyntax-caseもちょっと使ってみたんですが、 まだ標準化されていないせいか、処理系によって違いが結構あるので 今は乗り換えるのを見送ろうと思ってます。
- 456 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 22:59:32 ]
- よく思うことなんだが、言葉でくどくど説明されてもよくわからん。
簡単なテストケースを書いてくれ
- 457 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:10:37 ]
- ;(define-syntax my-define-structure
; (syntax-rules () ((my-define-structure name slot ...) ; (define (string->symbol (string-append "make-" (symbol->string name))) (lambda (… などとして、新しいシンボルを作ってそれを束縛したいのです。 defineは第1引数に式はおろか、準引用すら許しませんから困ってます。 そこで、マクロに展開されてdefineが評価される前に引数がシンボルに展開されれば、と考えました。 これは黒田氏が指摘している問題の一つな気がします。 Shiro氏も ・せめてシンボルの生成くらいはr5rs内で出来て欲しいってのはありますね。 とおっしゃってますし、正攻法ではどうも解決できない気がします。 プリプロセサを書くしかないのでしょうか?
- 458 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:14:04 ]
- 混乱してるからクドクドとなるんであって、
簡単にはテストケースを書けないんだろ。
- 459 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:15:44 ]
- defineは第一引数に関数呼び出しはおろか、特別式すら、が正しかったですね
- 460 名前:デフォルトの名無しさん mailto:sage [2007/05/27(日) 23:18:21 ]
- >>457
前スレ172みたいなのをコンパイル時にやりたいっつーことだな。 それならやっぱsyntax-case必要だろう。
- 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
|

|