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


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

関数型プログラミング言語Haskell



1 名前:潜伏していた1 mailto:sage [02/02/16 16:55]
何とか生き残れました。
前スレ
pc.2ch.net/test/read.cgi/tech/996131288/l50

関連 >>2 以降

606 名前:デフォルトの名無しさん [03/04/27 17:03]
>>605
アリガd

607 名前:デフォルトの名無しさん [03/04/27 21:58]
初期のhaskellはschemeで作られたって本当?
昔Yale大学のサイトになんか書かれてたけど。

608 名前:デフォルトの名無しさん mailto:sage [03/04/29 08:28]
けど・・けど・・

609 名前:デフォルトの名無しさん [03/04/29 14:15]
Common Lisp?

610 名前:動画直リン [03/04/29 14:26]
homepage.mac.com/hitomi18/

611 名前:デフォルトの名無しさん [03/05/05 17:03]

f x = let a = 1; b = c g
y = exp2
in exp1

f x = let a = 1; b = c
g y = exp2
in exp1

612 名前:デフォルトの名無しさん [03/05/14 12:10]
最強

613 名前:デフォルトの名無しさん mailto:sage [03/05/15 17:49]
logoが変わった

614 名前:デフォルトの名無しさん mailto:sage [03/05/16 14:53]
前よりよくなったねえ



615 名前:デフォルトの名無しさん mailto:sage [03/05/16 14:58]
そ…、そうか?
かなりビミョーなデザインだと思うが。

616 名前:デフォルトの名無しさん [03/05/16 23:07]
λの回りにゴミが付着してる様に見える

617 名前:デフォルトの名無しさん mailto:sage [03/05/17 00:44]
:: = 静的型付け
-> = 高階関数
∀ = 多相
=> = 型クラス
>> = モナド

つーことかいな。


618 名前:デフォルトの名無しさん mailto:sage [03/05/17 01:29]
そう考えると凝ってるな

619 名前:デフォルトの名無しさん [03/05/20 07:11]
凝ってる、っつーか、まんまやん。

620 名前:デフォルトの名無しさん mailto:sage [03/05/22 16:57]
CGAの話止まってるけど、なかなかまとまらんのかね。

621 名前:デフォルトの名無しさん mailto:sage [03/05/26 19:20]
>>619
featuring static typing, higher-order functions,
polymorphism, type classes and monadic effects

にそれぞれ対応してるという解釈のようだけどそれ分かって言ってんの?


622 名前:山崎渉 mailto:(^^) [03/05/28 12:56]
     ∧_∧
ピュ.ー (  ^^ ) <これからも僕を応援して下さいね(^^)。
  =〔~∪ ̄ ̄〕
  = ◎――◎                      山崎渉

623 名前:デフォルトの名無しさん mailto:sage [03/05/30 18:14]
結局、wxWindowsのバインディングで終わりそうな気配だな

624 名前:遅報 mailto:sage [03/06/02 00:56]
ghc major version up



625 名前:デフォルトの名無しさん mailto:sage [03/06/02 06:41]
6.0の目玉はTemplateということになるのかな?
www.haskell.org/ghc/docs/6.0/html/users_guide/template-haskell.html

626 名前:デフォルトの名無しさん mailto:sage [03/06/02 17:06]
教えて君で申し訳ないのですけど、他の関数型言語と比べて Haskell のどのあたりが
(・∀・)イイ! or (゚д゚)マズー なのですか?
できれば、いい面と悪い面の両方を聞いてみたいです。

627 名前:デフォルトの名無しさん mailto:sage [03/06/02 17:37]
>>626

(・∀・)イイ!
実装がいくつかある。

(゚д゚)マズー
末尾再帰じゃない。


628 名前:デフォルトの名無しさん mailto:sage [03/06/02 17:45]
○:数少ない遅延評価な言語の一つ
△:clean は遅延/正格の切替えができるらしいが、Haskellは…

629 名前:デフォルトの名無しさん mailto:sage [03/06/02 18:58]
>>627 実装がいくつかある。
SchemeやSMLも実装はいくつかあるが。
個々の実装の間に互換性がなければ、却って混乱するのでは?

630 名前:Lazy eva. [03/06/02 21:31]
call by need
必要なら呼んで

631 名前:デフォルトの名無しさん mailto:sage [03/06/02 21:39]
>>627
>(゚д゚)マズー
>末尾再帰じゃない。
lazyだと末尾の最適化はいらないんじゃなかった?
おれが勘違いしてるのかも知れないけど

632 名前:デフォルトの名無しさん mailto:sage [03/06/03 10:04]
(´-`).。oO( Haskell の (・∀・)イイ! 点がこの程度しか挙がらなくていいのだろうか)


633 名前:デフォルトの名無しさん mailto:sage [03/06/03 22:56]
いいところ:
    純粋な関数型言語
    厳格な型チェック
    比較的豊富なライブラリ
    遅延評価
わるいところ:
    遅い
    flatなarrayが無い

634 名前:デフォルトの名無しさん mailto:sage [03/06/07 03:00]
スレの伸びが lazy ...



635 名前:デフォルトの名無しさん mailto:sage [03/06/07 23:24]
>>634
…実はこのスレの定義は既にすべて準備されていて、誰かが問いを放つとレスが見えるようになる?

636 名前:デフォルトの名無しさん mailto:sage [03/06/09 12:38]
Haskell: The Craft of Functional Programming
これの新しいバージョンがでるっていううわさは本当なの?
Ruby系サイトのどこかで書いてあった気がするのだけど。

637 名前:デフォルトの名無しさん mailto:sage [03/06/09 13:06]
www.amazon.co.jp/exec/obidos/search-handle-form/249-3518664-2502769


638 名前:637 mailto:sage [03/06/09 13:07]
あ、だめだった。Amazonで検索すれ。

639 名前:デフォルトの名無しさん mailto:sage [03/06/09 22:20]
>>635
逆かも?
問いが放たれてから、必要に応じて定義を考える。

640 名前:デフォルトの名無しさん [03/06/11 00:32]
問に対して常に同じ答えが返ってきます。

641 名前:デフォルトの名無しさん mailto:sage [03/06/11 09:51]
文脈が変っていても同じ質問に対しては同じ答えが返ってきます。

642 名前:デフォルトの名無しさん mailto:sage [03/06/11 09:52]
>>640
問いの系列がmonadな演算で関連付けられてるので、
単独の問いに対しては当てはまらないカモッ!

643 名前:デフォルトの名無しさん [03/06/12 18:05]
>>641
それではガイシュツ処理が出来ませんので、
不具合発生です。

644 名前:モナd mailto:sage [03/06/16 12:58]
 ΛΛ
(´d`) .。o〇(monad∈モナー?)



645 名前:デフォルトの名無しさん [03/06/17 18:46]
モナドは、人間から見て、副作用を扱ってるコードとほとんど
同じように見える。
人間にとって副作用のあるコードと同じように見えてる
とすれば、モナドって何の意味があるの?
人間が関数プログラミングしやすくするために副作用が
禁止されてるんじゃ無かったの?

646 名前:デフォルトの名無しさん mailto:sage [03/06/17 18:51]
「ある」と「あるように見えるけどない」は違うだろ…

647 名前:_ mailto:sage [03/06/17 18:53]
homepage.mac.com/hiroyuki44/

648 名前:デフォルトの名無しさん [03/06/17 18:55]
>>646
違うけど、プログラマから見て同じように見えてるんだったら
プログラマにとっては同じでは?
コンパイラにとっての意味しかないのですか?

649 名前:デフォルトの名無しさん mailto:sage [03/06/17 20:07]
関数型の場合、コンパイラにとっては「ない」方が都合がいいけど、
人間にとってはあなたの言う通りあるように見えた方が扱いよいわけだ。
で、「ない」ものをあるように見せるモナドは、便利ってことにならない?

それならモドキじゃなくて本物の副作用を認めてもいいじゃんという話はまた別

650 名前:デフォルトの名無しさん [03/06/17 20:29]
>>649
> 人間にとってはあなたの言う通りあるように見えた方が扱いよいわけだ。

それは関数プログラミングに反するから、関数プログラミング
の立場から見た場合、扱いが良いとは言えないんじゃないですか?

651 名前:デフォルトの名無しさん mailto:sage [03/06/17 20:29]
話が逆なんじゃないか?モナドは副作用をわざわざあるように見せるためのものでもないだろう。

652 名前:デフォルトの名無しさん mailto:sage [03/06/19 21:09]
a <- hoge
ってやったら、あとは a は見るからに完全に副作用の無い
関数型プログラミングであつかうわけだから、
モナドがあるおかげで関数型の意味がなくなるなんてことは全然無い。

結局モナドって、
副作用や、コードを書いた時点では決まらないものを
普通の関数の引数なんかにつかって破綻するのをさけるために、
型の前にMとかつけてそのままじゃつかえなくする仕組みでしょう。

653 名前:デフォルトの名無しさん [03/06/24 08:16]
日本語扱えるhaskellの処理系ってありますか?

654 名前:デフォルトの名無しさん [03/06/24 09:06]
いやらしいリンク集作った
homepage3.nifty.com/coco-nut/



655 名前:デフォルトの名無しさん [03/06/26 07:32]
Haskellはじめますた。
面白いですね〜
・リストの内包表現に萌えた
・無限データ構造萌え
 numForm n = n : numForm (n+1) とか。
 あるもんをあるように書いたらいいって言うのがすどい。

詳しい方々、わかんないことがあったら教えてください。
アフォなんですが何とかがんばって基本を理解してから、
モナドを通って詳しい皆さんのところにゆきつきますので。

いまは、組み込み関数?を調べるのに困ってたりします。
IntをDoubleに変換するのってどうするの?
IntとIntegerの変換どうするんでうか?
とか、わからん。
「**」が解らなくて困ってた事も。
(-1)で懲りて、あらゆるところに括弧つけまくりのコードを書いてたり。

656 名前:デフォルトの名無しさん [03/06/27 10:48]
>>655
fromIntegral :: forall b a. (Num b, Integral a) => a -> b
toInteger :: forall a. (Integral a) => a -> Integer
fromInteger :: forall a. (Num a) => Integer -> a

657 名前:デフォルトの名無しさん mailto:sage [03/06/27 13:05]
今年もICFPの時期が来ましたがみなさんいかがお過ごしですか?

658 名前:デフォルトの名無しさん mailto:sage [03/06/28 13:34]
>>655
$をつかうと
f (g (h x))
みたいなのを
f $ g $ h x
とかけて括弧削減。

659 名前:デフォルトの名無しさん [03/06/29 21:21]
初心者質問いいですか?
GHCで、API、例えばIsDBCSLeadByte Char -> Bool を使いたいと思ったらどうすればいいのでしょう

660 名前:貧乏脱出!これであなたはお金持ち mailto:sage [03/06/29 21:30]
普通に働いてお金持ちになれるのは全体の1%のみって本当!?
本当にお金持ちになるにはやはり「副収入」が必要!
一日30分 おうちでコピペ、コピペ!
嘘だと思うんならランキング見てみてくださいよ↓↓
(直リン不可)
www.adultshoping.com/addclickport.cgi?pid=1053353765(直リン不可)

///////.......///////////////////////////

661 名前:デフォルトの名無しさん mailto:sage [03/06/29 22:10]
誤解があるようだが、モナドは純粋な関数型言語が
手続き風にコードを書くためのシンタックストリックに過ぎない。
拡張でもなんでもない。
(もちろんシーケンシャルのオプションと使われることが多いわけだが)


662 名前:デフォルトの名無しさん [03/06/29 22:22]
         _,..............._,.......
      ,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_
     _ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、
    (::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)
   _ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::)
  (::::::::::::::::::/   ̄ , ‐-、 |::::::::::::::::::::::::::::::::)     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::)    |  トリックだ。
   ):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::(   | 
   (::::::::::::/`i´ ,└=゚'┘  |::::| 6 |:::::::::::::::::::}  <  副作用があるように見えているに
    `〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜"    |  過ぎん。
      ヾ|||ll|||||||||||l〉|  三ー'〜〜"         | 
         |||:二三|||| l  ,三   ヽ、          \______________
         |l  ⌒ ||| ://     ヽ=、-、_
       |l、:( : : ||/ /       ヽ, |    ̄\
      /   ̄   /        ノ /       \

663 名前:デフォルトの名無しさん mailto:sage [03/06/29 22:37]
サータン,サータン!

664 名前:デフォルトの名無しさん mailto:sage [03/06/30 00:06]
ところで、日本語訳のページが見れなくないですか??



665 名前:デフォルトの名無しさん [03/06/30 02:53]
>>659わかるひといませんか〜

666 名前:デフォルトの名無しさん mailto:sage [03/06/30 07:59]
>>664
www.sampou.org/haskell ならサーバマシンの調子が悪いそうです

667 名前:デフォルトの名無しさん mailto:sage [03/06/30 18:04]
>>666
復活したようです。

>>665
いないんじゃないですか。人少なそうだし。
俺は、外界との繋がりはsystem :: String -> IO ExitCodeくらいしか知らない。

668 名前:659=665 mailto:sage [03/07/02 07:35]
検索の結果、MessageBoxを呼んでいる例は見つけました。(真似たらできました)
でも、*.hiをバイナリ検索しても、IsDBCSLeadByteはインポートされて無いようです。
(CharNextとか、代用できそうなAPIも同様)

これは、Haskellで全角文字を扱うなというお告げでしょうか…

669 名前:デフォルトの名無しさん mailto:sage [03/07/02 08:58]
>>668
IsDBCSLeadByteってwindowsのAPI?
そういうものはそのライブラリとリンクしてつかうんじゃないのかな。
haskellに入ってるわけがないというか。

www.haskell.org/libraries/
のInterfacing with other Languages and Systemsとか。

670 名前:デフォルトの名無しさん [03/07/02 13:46]
>>668
>(真似たらできました)
おー、あなたも私から見たらすどい。
よろしければ、MessageBoxを出すコードをこのスレに張って
共有していただければありがたいです。

671 名前:デフォルトの名無しさん mailto:sage [03/07/02 19:54]
>>669
いや、GHC(Win版)には既にWin32 API(の一部)のHaskell用インポートが付いてるんですよ。

>>670
どーせ丸写しなので、いくらでも共有しましょう。

import Win32
main = messageBox nullHANDLE "Text" "Title" mB_OK

たった二行。
コンパイル時に -package win32オプションが必要です。
(win32ディレクトリ以下はデフォルトでは見てくれないので)

↓見つけたページ
www.haskell.org/pipermail/glasgow-haskell-users/2002-March/003110.html

なお、同じようにしてMessageBeepを呼ぼうとしましたが、挫折中です。

672 名前:デフォルトの名無しさん mailto:sage [03/07/02 20:21]
>>669
あ、でもリンク先のFFIとか使えばできそう?できるのか俺に?
…ありがとうございます

673 名前:デフォルトの名無しさん [03/07/05 01:11]
FranTkを使った事のあるかたは居られますか?
使おうとしたけど何だかよくわからんかった。(窓使いです)

674 名前:デフォルトの名無しさん mailto:sage [03/07/06 22:26]
>659
ttp://www.sampou.org/haskell/report-j/basic.html
>6.1.2 文字と文字列
>文字型 Char は列挙型のひとつで、16 bit の値からなり、Unicode 標準 [10] に準拠する。
Unicodeなので要らないのでは?
ちゃんと実装されているならばだが。



675 名前:デフォルトの名無しさん mailto:sage [03/07/07 10:39]
> ちゃんと実装されているならばだが。

内部ではUnicodeかもしれないけど、全角文字をgetCharで読むと二回に分けて来るんですよ…

676 名前:デフォルトの名無しさん mailto:sage [03/07/07 17:07]
>>674
Unicodeとその(バイトでの)エンコーディングは別物だ。

677 名前:デフォルトの名無しさん mailto:sage [03/07/08 02:44]
>>676
実際
I/O functionsがbyte読んでそれをかえすだけだから、
Charが16ビットである意味がないんだよな。
謎の設計。

678 名前:デフォルトの名無しさん [03/07/14 01:55]
return () << [1,2,3] が [1,2,3] を返すのは何で? ()モナドの定義?

679 名前:デフォルトの名無しさん [03/07/14 01:56]
ごめん。わかってると思うけど << じゃなくて >> の間違い

680 名前: mailto:sage [03/07/14 03:29]
>>678
リストはモナドだから。

681 名前:デフォルトの名無しさん mailto:sage [03/07/14 03:58]
そういや、漏れもIOモナドはちょっと分かったつもりだけど、
なんでリストがモナドなのがいまいちよく分からん。

682 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:22]
m がモナドのとき return () << m が m になるのはなんで? ()モナドの定義?

683 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:29]
また >> を間違えて << にしてまった

書いた後気づいたのだが return [3,4] >> [1,2] も [1,2] 返すのか
() がポイントではなく return の方がポイントだった
かきまぜてスマン

684 名前:デフォルトの名無しさん mailto:sage [03/07/14 04:42]
return 1 >> [1,2] でも return 'a' >> [1,2] でも同じだな



685 名前:デフォルトの名無しさん mailto:sage [03/07/14 14:12]
>>682
 >>の型からわかる型推論。

686 名前:デフォルトの名無しさん mailto:sage [03/07/14 14:13]
もっというと()はどのモナドでも返せる。

687 名前:デフォルトの名無しさん [03/07/14 18:52]
getChar って結局何返すの?
参照透明性からいって 'a' が入力されたからといって IO 'a' が返るわけじゃないんだよね
たびたび出る話題でスマンが毎回納得にいたらない

688 名前:デフォルトの名無しさん mailto:sage [03/07/14 19:05]
IO

689 名前:デフォルトの名無しさん mailto:sage [03/07/14 19:27]
>>687
意味不明。IO Charだけど?

690 名前:デフォルトの名無しさん mailto:sage [03/07/14 20:13]
>>687
強いて言えば IO 'a'だろうが、それで参照透明性に何の問題が?

691 名前:デフォルトの名無しさん [03/07/14 22:08]
そもそもモナドを理解するのにIOモナドから入る,っていうのが間違っている
という気がする.モナドを理解するためには,次の論文を読むのが吉かと.

Wadler, P. : Monads for functional programming

692 名前:デフォルトの名無しさん mailto:sage [03/07/14 22:22]
>>691
www.research.avayalabs.com/user/wadler/topics/monads.html
ここにあるやつ?

693 名前:デフォルトの名無しさん [03/07/14 23:45]
>> 692
そうそう.

694 名前:デフォルトの名無しさん [03/07/15 00:39]
関数型では同じ関数なら何回呼んでも同じ値が返る建前では
実は暗黙のworldが渡されていて暗黙の新しいworldも返されている?



695 名前:デフォルトの名無しさん mailto:sage [03/07/15 00:47]
モナドって、食べ物じゃなかったのか。

696 名前:デフォルトの名無しさん [03/07/15 01:05]
理解するのに論文を読ませる必要がある事自体に
何か問題があるような気もするがー。

697 名前:デフォルトの名無しさん mailto:sage [03/07/15 01:28]
今印刷して読んでます…辞書片手に…どなたか、厨房向けに噛み砕いて説明してホスィ

698 名前:デフォルトの名無しさん [03/07/15 01:31]
>>697
         _,..............._,.......
      ,ノ⌒::::::::::::::::::::::::::::::::::::⌒ヽ_
     _ノ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ヾ、
    (::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::)
   _ノ:::::::::::::::;ヘ::::::::::ノ⌒ヽ:::::::::::::::::::::::::::::::::)
  (::::::::::::::::::/   ̄ , ‐-、 |::::::::::::::::::::::::::::::::)     / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
  (:::::::::::::/ヽj _/ -‐-、 |::::::::::::::::::::::::::::::::)    |  トリックだ。
   ):::::::::ヾllli_、_,;iiiillllllllli <::::::;へ:::::::::::::::::(   | 
   (::::::::::::/`i´ ,└=゚'┘  |::::| 6 |:::::::::::::::::::}  <  副作用があるように見えているに
    `〜、 ゝ| _コ、_、 /|::::| ソ/::::::::::;〜"    |  過ぎん。
      ヾ|||ll|||||||||||l〉|  三ー'〜〜"         | 
         |||:二三|||| l  ,三   ヽ、          \______________
         |l  ⌒ ||| ://     ヽ=、-、_
       |l、:( : : ||/ /       ヽ, |    ̄\
      /   ̄   /        ノ /       \

699 名前:デフォルトの名無しさん mailto:sage [03/07/15 06:43]
>>682
return () >> [1,2,3]
後ろがリストなので、これはリストモナド
returnを外して、>> を >>= に変換すると、
[()] >>= (\x -> [1,2,3])
前のリストの要素それぞれに対して後ろの関数を呼んで、その結果を連結したものがこの式の値なので、
(\x -> [1,2,3]) ()
[1,2,3]


700 名前:デフォルトの名無しさん mailto:sage [03/07/15 08:15]
>>694
その通り。IO a はHaskellの側から見ると、
data IO a = IO (World -> (a, World))
このような構造になっていて、実行結果がIOだった場合に、表示する前にWorldが渡されて実行される。
実際はそんな面倒なことしていないと思うけどね。

701 名前:デフォルトの名無しさん mailto:sage [03/07/15 08:48]
半分ぐらい読みました…まさに>>698のおっしゃる通り…それ以後の式を全部λとして渡して、
でっかい合成関数を組み立てて、最後に一括して実行してるようなイメージでいいのでしょうか?→モナド
(と同時に、実装までそうなってないよなあと信じたい)

702 名前:デフォルトの名無しさん mailto:sage [03/07/15 09:03]
>>698
モナドを使えば副作用は「ある」というべきだろう。

たとえばモナドを利用したカウンタを利用して、
あるいは、ファイルに1, 2, ...と書き込んでループをつくれば、
あきらかにそこには副作用があるわけだ。

むしろWorldを変化させながら渡し続けるという発想の転換で(言語に対し)
無いように見せかけているだけだ。人間にとっては副作用は存在する。

703 名前:デフォルトの名無しさん mailto:sage [03/07/15 09:26]
>>702
あるように見せかけているだけだろ?
そうじゃなきゃモナドの意味がない

704 名前:山崎 渉 mailto:(^^) [03/07/15 09:34]

 __∧_∧_
 |(  ^^ )| <寝るぽ(^^)
 |\⌒⌒⌒\
 \ |⌒⌒⌒~|         山崎渉
   ~ ̄ ̄ ̄ ̄



705 名前:デフォルトの名無しさん mailto:sage [03/07/15 11:33]
>>701 よいはず。
あと、遅延実行されるのでそう実装しても効率は悪くならないと思う。

706 名前:デフォルトの名無しさん mailto:sage [03/07/15 18:29]
>>703
逆だよ。というか循環論法。

そもそも関数型言語には本来副作用は存在し得ない。状態ってものが無いからね。
しかし、特に外部とアクセスするプログラムのためには副作用が必要だ。

関数型言語と、その副作用をともなう処理を、
副作用の種類(IOとか)毎の(内部状態を保持する)モナドを導入することで*分離*してるだけだ。






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

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

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