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


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

((Common Lisp) (Scheme) :Part 15)



1 名前:デフォルトの名無しさん mailto:sage [2006/06/23(金) 10:22:53 ]
過去スレ
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/
Part8: pc5.2ch.net/tech/kako/1058/10582/1058263391.html
Part7: pc5.2ch.net/tech/kako/1042/10421/1042167213.html
Part6: pc3.2ch.net/tech/kako/1031/10315/1031560687.html
Part5: pc3.2ch.net/tech/kako/1023/10230/1023091882.html
Part4: pc.2ch.net/tech/kako/1016/10162/1016211619.html
Part3: pc.2ch.net/tech/kako/1008/10082/1008220265.html
Part2: pc.2ch.net/tech/kako/1002/10025/1002584344.html
Part1: piza2.2ch.net/tech/kako/987/987169286.html

683 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 01:47:29 ]
ケイデンスが開発したのか。EDA業界ではメジャーなのかな。
Lispに慣れてるせいか、Lispより読みやすいとか書きやすいとかは正直感じないなぁ。
括弧に抵抗ある人にとっては、こういうほうが良いんだろうけど、マクロとかの話を始めると
結局二重言語になってしまって却ってわかりにくいんじゃないだろうか。

684 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:06:34 ]
The following example illustrates a custom syntax for a special way to build a list from an
original list by applying a filter and a transformation. To build a list of the squares of the odd
integers in the list
 ( 0 1 2 3 4 5 6 7 8 9 )
you write
trForeach(
 ?element x
 ?list ’( 0 1 2 3 4 5 6 7 8 9 )
 ?suchThat oddp(x)
 ?collect x*x
) => ( 1 9 25 49 81 )

instead of the more complicated

foreach( mapcar x
  setof(x ’(0 1 2 3 4 5 6 7 8 9) oddp(x))
  x * x
 ) => ( 1 9 25 49 81 )

Implementing an easy-to-maintain macro requires knowledge of how to build SKILL
expressions dynamically using the backquote (‘),
comma (,), and comma-at (,@) operators.
The definition for trForeach follows.

defmacro( trForeach ( @key element list suchThat collect )
 ‘foreach( mapcar ,element
  setof( ,element ,list ,suchThat )
     ,collect
 )
)

685 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:07:58 ]
>>682
まだ失敗してないけど、成功するとは思えません。
いや、マジな話店頭で気軽に買える処理系がそのまま仕事で使えるようにならないと普及せんだろ?


686 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:15:38 ]
>>685
2行目には賛成するが、3行目には賛成できない。

687 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:20:13 ]
(defun fibo (n)
 ( cond
  (( or (equal n 1) (equal n 2) ) 1 )
   (t (plus ( fibo (difference n 1) )
         (fibo (difference n 2 ) ) ) )
  )
)

↓こんな感じ。

procedure( fibo(n)
  if ( (n == 1 || n ==2 ) then
     1
  else fibo(n-1)+ fibo(n-2)
 )
)

どっちで書いてloadしても良いんだけどさ。

688 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:21:45 ]
言いたかったのは失敗だなんてのは
悪いけど、井の中の(ry

689 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:28:42 ]
問題はCadenceが言語syntaxに知財持っていると
openな似たsyntaxの処理系訴訟されかねないって点かな
Cadenceは権利にメチャこだわる(うるさい)会社だから

690 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:43:36 ]
Ruby はもうキャズム越えただろ
店頭販売の処理系じゃないとってw
その理論だと perl や PHP などの web 系の仕事は成功とは言われない訳だな
Java も処理系は売ってないな
JavaScript も Ajax などのブラウザクライアント言語として成功しているように思えるがこれも成功じゃないのかw
なにが基準で成功なんだwwww

691 名前:デフォルトの名無しさん [2006/12/20(水) 02:49:26 ]
>>687
こういうのもLispで自己記述できるんですか?



692 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:49:42 ]
外したよ。自分で気が付かないと。

693 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:52:13 ]
Lispで自己記述できるかどうかは知らない。
pretty printするとS式「でも」表示できるから中身は全くのlisp。

694 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 02:58:54 ]
そういうreaderをLispで書くのはさほど難しくはないだろうね。
ただ、言語を普及させるってのは別の意味の労力が必要だからなぁ・・・

695 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:01:17 ]
俺はそう言うopen のreader(あれは単なるreaderではなさそうなんだが)
喉から手が出るほど欲しいんだよ
生産性が桁違いなんだ
自分で作っている時間が無くて残念

696 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:04:40 ]
普通は
(defun fibo (n)
 (if (or (= n 1) (= n 2)) 1)
   (+ (fibo (- n 1))
     (fibo (- n 2)))))
って書くから、少なくともタイピング労力的には大差ない気がしちゃうのは
俺がLisp贔屓だからだろうか。w

697 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:05:53 ]
たぶんね。もう少しややこしいcodeだとありがたみが分かる

698 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:06:51 ]
>>696
あ、ちょっと間違えてるな。w
まぁ気分だけ汲み取ってくれ。

699 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:09:42 ]
結局、Lispに慣れてないとなかなかそういう物はつれない。
だけど、Lispに慣れちゃうと特に必要性を感じない。
というわけで、あまり作られないんじゃないかと思う今日このごろ。
Pythonくらいに明確にLispとは違う言語にしちゃうなら話は違うだろうけど。

700 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:11:26 ]
多分
・lispのcodeの一見難解さが(頭の体操みたいで)好き
・lispの柔軟さが好きだけどパット見た目のcode分かりやすさも重視したい俺
好みの違いの希ガス

701 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:14:39 ]
いくら何でも寝ます
最近はHaskellがお気に入りだったりするw
ノシ



702 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 03:55:24 ]
言語自体が S 式じゃなくても
言語の木構造をファーストクラスオブジェクトとして扱える
上記に伴い、文字列・ファイルストリームから評価前の木構造を取り出せる
くらいできるとずいぶん使い勝手がいいと思うんだけどなあ。
世の動的言語デザイナーは、なぜ read と eval を分離しようとしないんだろうか。

703 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 04:03:34 ]
オブジェクトを忘れょぅょ
関数プログラミングが完全に包含しているんだから

704 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 10:32:05 ]
閑散
黒田
盛盛


705 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 12:55:35 ]
>702
禿同

706 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 13:08:18 ]
結論としては、黒田マンセーということで。

707 名前:デフォルトの名無しさん [2006/12/20(水) 21:19:56 ]
>>702
>世の動的言語デザイナーは、なぜ read と eval を分離しようとしないんだろうか。

言語デザイナーと言語実装者が分離してないからじゃないかな。
「正しい事」より実装が簡単な事の方が重要なのです。

708 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 21:36:15 ]
共産主義と資本主義みたいなもんか


709 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 22:02:09 ]
>>702
C♯は標準ライブラリを使ってソースをパースしてツリーとして使えるようになってるよ。
あとはHaskellとか。

710 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 22:07:39 ]
>>709
C#のそれは違うのだが
どう違うのか説明が難しい

711 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 23:02:11 ]
Pythonにもあるが、ツリーが奇々怪々で使えない



712 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 10:52:10 ]
>710
kwsk

713 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 13:23:45 ]
LCG あたりの話かな

714 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 15:19:52 ]
抽象構文木がS式として手軽に扱えるようになってるだけじゃなくて、
quote(やquasiquote)があるのがLispの強い所でしょう。

715 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 15:34:49 ]
グワシ

716 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 16:39:55 ]
>>702
そうするとCLのシンボルがどこにinternされるか問題みたいなのが
出てきて、今度はそれと戦わないといけなくなる可能性があるからなあ。
Schemeみたいにパッケージ?何それ?なら話は簡単だけど。
全て文字列でやる?

717 名前:デフォルトの名無しさん [2006/12/23(土) 23:56:21 ]
OCamlのCamlp4にはquotationもantiquotationもあるよ

718 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:32:53 ]
scheme で,階乗を末尾再帰で書こうと思って

(define (fact n)
(letrec (((fact-sub a n)
(if (= n 0) a
(fact-sub (* a n) (- n 1)))))
(fact-sub 1 n)))

こんなふうにしたらうまくいきません.なんで?

719 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:35:52 ]
letrec は labels じゃないから

720 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 21:46:54 ]
>>718
おまいさんがやりたいのはこういうことけ?

(define (fact n)
(let fact-sub
((a 1)
(n n))
(if (= n 0) a
(fact-sub (* a n) (- n 1)))))

721 名前:718 mailto:sage [2006/12/29(金) 22:14:29 ]
letrec では関数は定義できないってことでしょうか?
で,そういう場合には名前つきletを使うと.
なるほどありがとうございます.




722 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:17:24 ]
>>721
letrecでやりたけりゃこうなる。

(define (fact n)
(letrec ((fact-sub (lambda(a n)
(if (= n 0) a
(fact-sub (* a n) (- n 1))))))
(fact-sub 1 n)))

723 名前:718 mailto:sage [2006/12/29(金) 22:22:01 ]
>>722
lambda を使うと letrec で定義できるのに,
使わなかったら定義できないのはどうしてでしょうか?


724 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:23:01 ]
>>723
どうして定義できると思うんだ?

725 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:29:53 ]
(define f (lambda (...) ...))

(define (f ...) ...)
と書けるのと同様の syntax sugar が letrec にも欲しいってことか?

726 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 22:36:53 ]
>>725
そうだとしたらそういうマクロを定義すりゃいいだけのこったな。
欲しけりゃ作る。それがLisp系言語の宿命ってもんだ。

(define-syntax letrecf
(syntax-rules ()
((_ (((f args ...) b ...) ...)
body ...)
(letrec ((f (lambda(args ...) b ...)) ...)
body ...))))

(define (fact n)
(letrecf (((fact-sub a n)
(if (= n 0) a
(fact-sub (* a n) (- n 1)))))
(fact-sub 1 n)))

727 名前:718 mailto:sage [2006/12/29(金) 22:39:37 ]
>>725
まさにそのとおりです.
OCaml や Haskell だと両者の区別がなかったので,
scheme でもそうに違いないと早とちりしていました.

728 名前:デフォルトの名無しさん mailto:sage [2006/12/29(金) 23:01:25 ]
>>726
それってletrecと同じように関数以外の定義も受け付けるようにできね?
俺には無理だが。

729 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 01:57:11 ]
>>728
(define-syntax letrecf
(syntax-rules ()
((_ ((f b) ...)
body ...)
(let () (define f b) ... body ... ))))

730 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 12:19:22 ]
funcall がウザい
#' がウザい
ただソレだけの理由で CL を避けて Scheme を選んでいます

731 名前:黒田 mailto:sage [2006/12/30(土) 12:54:19 ]
ソースはどこに書いてるんですか?黒板?w



732 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 17:02:17 ]
黒田節炸裂!

733 名前:デフォルトの名無しさん mailto:sage [2006/12/30(土) 19:31:56 ]
酒は飲め飲め?

734 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 05:50:16 ]
俺としては、ローカル変数名と関数名が重なってしまうSchemeは使いたくない

735 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 08:34:17 ]
誰か「対話によるCommon Lisp入門」という本
3000円で譲っていただけないでしょうか?

736 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 12:21:23 ]
でた、関数名と関数名に似たような名前付けちゃう人。

737 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 12:33:59 ]
>734
ローカル変数を使うときに
いちいち関数名とダブってるか気にするのって面倒だよな

とうわけで俺はpythonも嫌い

738 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 18:49:09 ]
関数内で使う予定のない関数とダブるかなんてあんま気にしない。

739 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:21:16 ]
全角英数字使う人の好き嫌いなんてどうでm(ry

740 名前:デフォルトの名無しさん mailto:sage [2007/01/01(月) 19:29:20 ]
>>738
でた、関数名と関数名に似たような名前付けちゃう人。


741 名前:718 mailto:sage [2007/01/02(火) 04:04:45 ]
関数定義で,使わない仮引数(Haskell の _ みたいな)はどう書くの?




742 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 04:40:06 ]
_ でも ~ でも好きな名前つけとけばいいじゃない

743 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 23:03:27 ]
図形言語のフレームって円に出来る?
友達が円に出来るって言い張ってるんだけど

744 名前:デフォルトの名無しさん mailto:sage [2007/01/02(火) 23:20:27 ]
>>743
そう作ればそうできるよ

745 名前:デフォルトの名無しさん mailto:sage [2007/01/03(水) 02:50:19 ]
>>743
夢は きっと 叶う

746 名前:デフォルトの名無しさん mailto:age [2007/01/07(日) 23:23:22 ]
lambda age

747 名前:デフォルトの名無しさん mailto:sage [2007/01/08(月) 12:45:33 ]
>>737
Python使い始めの頃lenって変数を使ってハマったことがあるw

748 名前:デフォルトの名無しさん [2007/01/15(月) 04:22:11 ]
(M (+ 1 2))=>"(+ 1 2)=3"
みたいなマクロってどう作りますか?

749 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 05:31:36 ]
まず、式とその値を受け取って "式=値"という文字列を返す関数を作ってみ。

750 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 09:38:49 ]
constant foldingでぐぐれ

751 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 21:00:11 ]
>>748
schemeで書くとこんなカンジかなぁ。
CLは知らん。

(define (s->string s)
(let ((port (open-output-string)))
(write s port)
(get-output-string port)))

(define-syntax M
(syntax-rules ()
((_ s)
(string-append
(s->string 's)
"="
(s->string s)))))



752 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 01:32:24 ]
CL ならこうかな。
(defmacro M (expr) `(format nil "~S=~A" ',expr ,expr))


753 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 02:22:33 ]
CL すげぇ

754 名前:718 mailto:sage [2007/01/18(木) 03:01:47 ]
schemeでもこうできるじゃん

(define-syntax M
(syntax-rules ()
((M expr)
(format #f "~S = ~A" 'expr expr))))

755 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 07:14:15 ]
format って Schemer 的にどうなの?初期のハッカーの伝統を受けついでて
冗談みたいな機能がついてるけど、それってミニマリスト的には許せないよーな

756 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 09:04:50 ]
俺はこだわらないが

757 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 12:33:08 ]
ミニマリストは純LISPっしょ

758 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 13:17:11 ]
>>755
> 冗談みたいな機能
kwsk

759 名前:黒田 mailto:sage [2007/01/18(木) 13:45:08 ]
黒板に書ければなんだっていいのでは? :-)

760 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 14:46:36 ]
>>758
スキームは知らんけど、コモンリスプだとこんなんとか
(format nil "~R" 12345)
=> "twelve thousand, three hundred and forty-five"
(format nil "~:r" 12345)
=> "twelve thousand, three hundred forty-fifth"
(format nil "~@r" 1234)
=> "MCCXXXIV"

761 名前:デフォルトの名無しさん mailto:sage [2007/01/18(木) 16:51:19 ]
>>760
サンクス。それは確かに冗談みたいだ。
少なくともSRFI48には入ってないな。



762 名前:デフォルトの名無しさん [2007/01/19(金) 12:13:50 ]
試してみたいがこれ試すためだけに
処理系入れるのもなぁ……
SRFI何やってんの

763 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 02:20:17 ]
CLtL*のtexiファイルってないですか?


764 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 14:16:48 ]
RnRSのversion5.92が出たけど、R5RSと比べると結構ページ数が増えてるね。
www.r6rs.org/

765 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 18:32:20 ]
いまだにオブジェクトシステムもネットワーキングライブラリも入ってない件

766 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 19:47:34 ]
↓ここで黒田が一言

767 名前:デフォルトの名無しさん mailto:sage [2007/01/22(月) 20:05:24 ]
どーんまいん

768 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:04:33 ]
なんか()がatomかcellかで論争があったって話を聞いたんですが、
どんな論争だったんでしょうか。

769 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:20:25 ]
知りません

770 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 11:59:13 ]
知らない馬鹿は無理して会話に入ってこないで
黒板にSchemeコードでも書いてて下さい。

771 名前:デフォルトの名無しさん mailto:sage [2007/01/25(木) 12:44:38 ]
黒田にSchemeコードと空目した。




772 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 01:16:42 ]
あまりネにもたないほうがいいとおもわれ…

773 名前:デフォルトの名無しさん mailto:sage [2007/01/26(金) 02:00:44 ]
からかうなら ILC がチャンス
Scheme 屋が周りにいるとこで「黒田さーん、Scheme が使いものにならない
理由をもう少し詳しく教えてください」とでかい声で英語で聞けばよろし

774 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 00:30:00 ]
ttp://onecare.live.com/standard/ja-jp/prodinfo/default.htm

> ウイルス、ワーム、トロイの木馬、ハッカー、フィッシング詐欺、
> およびその他の脅威からコンピュータを保護します。

ポール・グレアムさん
マイクロソフトに言わせるとハッカーはウイスルやワームと同じものらしいです

775 名前:デフォルトの名無しさん mailto:sage [2007/01/27(土) 21:55:26 ]
>774
マイクロソフト自身がスパイウェア作ってるのにな

776 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 00:47:58 ]
なにこの香ばしい展開

777 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 08:37:28 ]
オープンソーススクリプト言語の糞信者どもが
神聖なLispスレをオナニーで荒らしているのです。

778 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 12:23:21 ]
ジハード!ジハード!

779 名前:黒田 mailto:sage [2007/01/29(月) 12:45:17 ]
Lispが負けそうになったら
自分が出て行ってPとかRをやっつける

780 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 13:30:30 ]
どのスレへ行っても言語勝負厨はうざいな

781 名前:デフォルトの名無しさん mailto:sage [2007/01/29(月) 13:52:37 ]
宗教戦争ネタの宿命ですな。





782 名前:デフォルトの名無しさん [2007/01/30(火) 15:09:48 ]
どなたか途中まででいいんでよろしくお願いします。
次に示すScheme プログラムについて以下の問に答えよ。
(define (subtree? t1 t2)
(cond ((atom? t1) (eq? t1 t2))
(#t (cond ((atom? t2) #f)
(#t (or (and (subtree? (car t1) (car t2))
(subtree? (cdr t1) (cdr t2)))
(or (subtree? t1 (car t2))
(subtree? t1 (cdr t2)))))))))
関数subtree?は二つのS 式(S 表現) t1, t2 を入力とし、真偽値(#t あるいは
#f) を返す関数である。
関数subtree?が真(#t) を返すための必要十分条件は何であるか答えよ。また、
関数subtree?が実際そのような関数であることをS 式に関する帰納法を用い
た議論によって示せ。

783 名前:デフォルトの名無しさん mailto:sage [2007/01/30(火) 15:11:21 ]
また宿題かよw






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

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

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