関数型プログラミング ..
[2ch|▼Menu]
369:346
05/02/06 20:18:15
>>368
スレリンク(gline板:1-9番)

370:デフォルトの名無しさん
05/02/07 04:10:20
ぬるほど

371:デフォルトの名無しさん
05/02/09 05:46:41
Haskellの初歩を学校でやっているのですが、
宿題が出て難しすぎるので誰か助けて下さい。

372:デフォルトの名無しさん
05/02/09 10:53:26
2つの項を入力されたらmost general unifierを出力する
*(1,y) *(x,+(a,b)) -> {x->1,y->+(a,b)}
のようなプログラムを作れ、という課題が出たのですがサッパリわかりません。
どなたか教えて下さい


373:デフォルトの名無しさん
05/02/09 20:23:43
>>372
もう一年やれば、理解も深まるよ。

374:デフォルトの名無しさん
05/02/09 20:27:03
というか,課題が全然理解できないんだが.

375:デフォルトの名無しさん
05/02/09 20:42:11
あ,分かってしまった.もう一年がんばってね.

376:デフォルトの名無しさん
05/02/09 20:59:08
問題の意味がわからないのならどうしようもないな

377:デフォルトの名無しさん
05/02/09 22:14:31
>>372
これ、数学板のmathematicaスレでも見たぞ
マルチすんな、消えろ

378:デフォルトの名無しさん
05/02/09 23:27:11
もっと低レベルな人にあわせてくれる学校に入りなおしましょう。


379:デフォルトの名無しさん
05/02/09 23:49:57
>>370
カッ

380:デフォルトの名無しさん
05/02/10 01:16:45
[1,5,8,43]などのリストをパラメータとして受け取って
[("1st",43),("2nd",8),("3rd",5),("4th",1)]のように
ランクをつけてランク順に返す関数が欲しいのですが
問題は[5,6,6,22,23,24,24]のような場合に
[("1st",24),("1st",24),("3rd",23),("4th",22),("5th",6),("5th",6),("7th",5)]
のように返さなければいけないことです。どうすればいいかさっぱりです。
誰か教えて下さい。


381:デフォルトの名無しさん
05/02/10 02:07:40
List> group $ reverse $ sort [5, 6, 6, 23, 24, 24]
[[24, 24], [23], [6, 6], [5]]
ここまで来りゃ後はなんとでもなるだろ。

382:デフォルトの名無しさん
05/02/10 02:35:51
>>381
ありがとうございます!!

383:デフォルトの名無しさん
05/02/10 02:43:00
あ、ランクを付ける際にはカウンタみたいなものを用意するんですか?

384:デフォルトの名無しさん
05/02/10 04:08:38
宿題か? 宿題なのか? テメエェェェ

385:デフォルトの名無しさん
05/02/10 07:31:12
>>381
演算子 $ って初めて見ましたが,なかなか便利ですね.
勉強になりました.

386:デフォルトの名無しさん
05/02/10 09:38:36
はい、そーです

387:デフォルトの名無しさん
05/02/10 23:12:49
> ここまで来りゃ後はなんとでもなるだろ。

いろいろ考えたのですがなんともなりません。
むしろここから先が一番大変なのではないかと・・・
まじで教えてくれませんか?

388:デフォルトの名無しさん
05/02/10 23:27:15
ここまで来てなんともならんてのは、けっきょく全然理解してないってことだ
ろ。これくらい自分で考えてみ。でないとただのカンニングだろ。


389:デフォルトの名無しさん
05/02/11 03:20:58
僕にはこれが限界でした。

rank :: [[a]] -> [(Int, a)]
rank x = [(i, n) | (i, a) <- zip [1..] x, n <- a]

確かに理解は非常に足りません。ですが、本を読んでも、
いろいろなほかのテクニックを知ってもループという基本的なことを
するのがこんなに難しい言語は初めてなのです。
なんらかのライブラリを使う必要があるのかもしれないと思って、
Listのところは大体見たんですが結局何も見当たらずもうダメです。
こんな簡単であろう問題に3時間も4時間もかけてる自分がすごい嫌になってきます。


390:デフォルトの名無しさん
05/02/11 04:03:59
ま、気楽にやれや、学生なんだし。

391:デフォルトの名無しさん
05/02/11 04:52:51
そう気楽でもないんすよ。いろいろあって。
ヒントを下さい。お願いします。

392:デフォルトの名無しさん
05/02/11 08:05:13
>>391
[1..]のところを["1st", "2nd", ...]というリストにすれば終わりだろ。
英語のカウントに勝手に直してくれるようなライブラリはないだろうな。

393:デフォルトの名無しさん
05/02/11 09:27:09
>>392
> [1..]のところを["1st", "2nd", ...]というリストにすれば終わりだろ。

そのリストはどこまで続くんですか?

394:デフォルトの名無しさん
05/02/11 09:48:51
いや、それじゃランク順の法則が違うんですよ。それだと
[("1st",24),("1st",24),("2nd",23),("3rd",6),("3rd",6),("4th",5)]
になっちゃうんですよ。

課題は
[("1st",24),("1st",24),("3rd",23),("4th",6),("4th",6),("6th",5)]
にならなきゃいけないので前のリストのカウントを常にしないと次のランクが
分からないわけです。これをどうしたものかと・・・・

>>393
同じ課題で悩んでる人ですか?そのリストは(length x -1)thまで続くんじゃないでしょうか?

与えられた整数に英語のカウントをつける関数はもう作ってあるんですが。

addSuffix :: Int -> String
addSuffix x
| x == 1 = "1st"
| x == 2 = "2nd"
| x == 3 = "3rd"
| otherwise = show x ++ "th"

395:デフォルトの名無しさん
05/02/11 10:08:15
>>394
> にならなきゃいけないので前のリストのカウントを常にしないと次のランクが
> 分からないわけです。これをどうしたものかと・・・・

rankingの関数が、
1)降順ソートずみ整数の(部分)リスト (初期値 全リスト)、
2)これまでに処理した整数の数 (初期値 ゼロ)、
3)直前に処理した整数 (初期値 -1とか、入力リストに絶対あらわれないもの)、
4)直前に処理した整数のランク (初期値 ゼロ)、
のよっつを引数として取ればいいんじゃないの?

> 与えられた整数に英語のカウントをつける関数はもう作ってあるんですが。
> | otherwise = show x ++ "th"
これだと
21番目は "21th"
22番目は "22th"
になっちゃうよ……


396:デフォルトの名無しさん
05/02/11 10:51:06
あ、ほんとだ!ご指摘ありがとうございます。
じゃぁ条件分岐のところ、xの代わりにmod x 10で。

rankingの関数はやはり4つも引数が必要ですか・・・・。
じゃぁそれでちょっと頑張ってみます。

397:デフォルトの名無しさん
05/02/11 11:01:33
ちょっとやり方は違うけど4つの引数使ってやっとできました。
でもなんかぎこちない感じ・・・。これでいいのでしょうか。
もっとスマートなやり方があるような気がしてなりません。

setRank :: [Int] -> [(String, Int)]
setRank [] = []
setRank (x:xs) = ("1st", x):[(addSuffix a, b) | (a, b) <- subSetRank xs x 2 0]

subSetRank :: [Int] -> Int -> Int -> Int -> [(Int, Int)]
subSetRank [] _ _ _ = []
subSetRank (x:xs) preVal position k
| x == preVal = [((position - (k+1)), x)] ++ (subSetRank xs x (position+1) (k+1))
| otherwise = [(position, x)] ++ (subSetRank xs x (position+1) 0)

addSuffix :: Int -> String
addSuffix x
| mod x 10 == 1 = "1st"
| mod x 10 == 2 = "2nd"
| mod x 10 == 3 = "3rd"
| otherwise = show x ++ "th"


398:392
05/02/11 11:01:34
>>394
失礼。俺なら395よりは、
groupBy (\x y -> snd x == snd y) $ zip [1..] $ reverse $ sort [5, 6, 6, 23, 24, 24
]
から変形するな。

399:どうでしょうか,,,
05/02/11 11:11:26
import List
rank :: Integer -> String
rank x
| x `mod` 10 == 1 = s ++ "st"
| x `mod` 10 == 2 = s ++ "nd"
| x `mod` 10 == 3 = s ++ "rd"
| otherwise = s ++ "th"
where s = show x

ranks :: [String]
ranks = map rank [1..]

sort_group :: Ord a => [a] -> [[a]]
sort_group l = group $ reverse $ sort l

main :: Ord a => [a] -> [(String,[a])]
main lst = zip ranks (sort_group lst)

400:デフォルトの名無しさん
05/02/11 11:14:24
>>399
全然違うじゃないか。
それにmainはIO aの型であるべきもので、使わないほうがいい。

401:デフォルトの名無しさん
05/02/11 11:21:27
誰も書かないから突っ込むけど、
11th,12th,13th

そんな私はsort使うためにimport Listするとhugsにレイアウトが違うと怒られる駄目駄目プログラマ。

402:401
05/02/11 11:27:11
importがImportになってた スレ違い御免orz

403:デフォルトの名無しさん
05/02/11 11:28:33
どうもありがとうございます。おかげ様で前のよりはマシになったかと思います。

setRankS :: [Int] -> [(String, Int)]
setRankS x = concat [setFirst n | n <- (groupBy (\x y -> snd x == snd y) $ zip [1..] x)]

setFirst :: [(Int, Int)] -> [(String, Int)]
setFirst ((x, y):xs) = [(addSuffix x, b) | (a, b) <- ((x, y):xs)]


404:デフォルトの名無しさん
05/02/11 11:41:07
>>401
またまた貴重なご指摘ありがとうございます。

addSuffix :: Int -> String
addSuffix x
| x == 11 = s ++ "th"
| x == 12 = s ++ "th"
| x == 13 = s ++ "th"
| mod x 10 == 1 = s ++ "st"
| mod x 10 == 2 = s ++ "nd"
| mod x 10 == 3 = s ++ "rd"
| otherwise = s ++ "th"
where s = show x


405:401
05/02/11 11:52:24
あーごめんなさい。私もまだ間違ってた。
111th,112th,113th,211th....。序数詞は怖い。もうないよね。

406:デフォルトの名無しさん
05/02/11 12:03:11
| mod x 100 == 11 = s ++ "th"
| mod x 100 == 12 = s ++ "th"
| mod x 100 == 13 = s ++ "th"

これ足せばOK?

407:デフォルトの名無しさん
05/02/13 13:11:54
宿題しか話題のない悲しい言語

408:デフォルトの名無しさん
05/02/13 15:11:50
>>407
> 宿題しか話題のない悲しい言語
達見かな。で、どうしてそうなのかという質問がなされ、欠点が羅列され、
いやそんなことはない理論的に美しいという反論が出て、数少ない実用例も示され……

409:デフォルトの名無しさん
05/02/13 16:36:48
関数型言語なんてみんなそうなんじゃない?
Lisp系は処理系が簡単だから使われるけど、それ以外は…


410:デフォルトの名無しさん
05/02/13 17:23:54
初心者を馬鹿にするとき、一番盛り上がります。

411:デフォルトの名無しさん
05/02/13 17:32:09
>>409
OCamlをフリーソフト(非オープンソース)を書くのに使っていますが。

412:デフォルトの名無しさん
05/02/13 18:02:27
じゃあ、みんなでHaskellで言語処理系を作ろう。

413:デフォルトの名無しさん
05/02/13 18:21:28
Haskellでテトリスは作れますか?

414:デフォルトの名無しさん
05/02/13 18:26:54
>>413
作れます。

415:デフォルトの名無しさん
05/02/13 18:33:34
Haskellのテトリス↓
URLリンク(web.comlab.ox.ac.uk)
URLリンク(fxp.hp.infoseek.co.jp)

416:デフォルトの名無しさん
05/02/13 18:55:01
ghcってどれくらいきちんとdebugされてるのかなあ。
仕事に使っても大丈夫?

417:デフォルトの名無しさん
05/02/13 22:14:38
>>411
こういうコンテキストで話すなら、商用に使われてナンボだと思うが。
俺自身は宿題用だろうが日曜プログラマーの趣味の道具だろうが構わんけど。


418:デフォルトの名無しさん
05/02/14 15:53:01
>>416
まあオープンソースだから、sourceforge.net/projects/ghc/やメーリングリストを見て
自分で判断してくださいということで。


ver6.4のリリースが延び延びになっているのが気になる。
RCのソースもコンパイルできないし…(@Mac)

419:デフォルトの名無しさん
05/02/14 20:24:12
そうそう。
あくまでも最先端の研究用なので、品質に期待してはいけない。

420:デフォルトの名無しさん
05/02/19 08:34:16
C,C++の代わりとまではいかなくても、
Perlの代わりぐらいにはなりますか?

421:デフォルトの名無しさん
05/02/19 11:17:33
>>420
もう少しHaskellのこと勉強してから出直してきたら

422:デフォルトの名無しさん
05/02/19 12:09:32
>>421
言語の完成度じゃなくてghcの完成度を聞いてるんだけど。

423:デフォルトの名無しさん
05/02/19 13:10:18
エスパー募集中ですか(w

424:デフォルトの名無しさん
05/02/19 23:54:19
ghcってとてもバグが少ないとおもう。
特に、コンパイル結果がおかしいというのは一つも知らない。
言語拡張を使ってコンパイラが落ちるのはあったが、gccだってよく落ちたし。

品質に期待してはいけないってのは、なんか具体的な理由があるの?

425:デフォルトの名無しさん
05/02/22 20:08:41
GHC最強。ノアだけはガチ。

426:デフォルトの名無しさん
05/02/22 22:01:11
ghcは完璧。バグなんて有り得ない。

427:デフォルトの名無しさん
05/02/23 09:12:55
URLリンク(www.ghc.or.jp)


428:デフォルトの名無しさん
05/02/23 19:20:04
ghcの品質に問題ありとかいってる奴は頭がおかしいな。

429:デフォルトの名無しさん
05/02/23 20:51:01
関数型言語で書かれてないソフトウェアなんて
信頼性低すぎて使ってられないよな。

430:デフォルトの名無しさん
05/02/23 21:14:20
ghcにはバグなんてない。
ghcの信頼性 >>>>>>>>> gccの信頼性

431:デフォルトの名無しさん
05/02/24 11:00:34
     カタカタ
  || ̄ Λ_Λ
  ||_(Д`; ) 「なに?このスレ・・・」
  \⊂´   )
    (  ┳'

432:デフォルトの名無しさん
05/02/26 23:31:32
妙な雰囲気を紛らわす一服の清涼剤sage

URLリンク(pggirls.asukaze.net)イ霖/Haskell、ソ、

433:デフォルトの名無しさん
05/02/27 03:01:22
ghcにバグがないことは証明済みです。

434:デフォルトの名無しさん
05/03/02 14:39:26
The Monad.Reader
URLリンク(www.haskell.org)


435:デフォルトの名無しさん
05/03/05 17:27:02
証明が間違ってないことも証明済みです

436:デフォルトの名無しさん
05/03/05 21:47:09
よく分からんが、ghcにバグは有り得ないってことか。

437:デフォルトの名無しさん
05/03/06 11:08:10
そゆこと

438:デフォルトの名無しさん
05/03/08 23:33:41
URLリンク(sourceforge.net)


439:デフォルトの名無しさん
05/03/09 00:11:32
ghcってのは宗教か何かですか?

440:デフォルトの名無しさん
05/03/09 00:24:00
真理です

441:デフォルトの名無しさん
05/03/09 20:45:50
我々はこのスレを笑い飛ばしていたものです…。
しかし、その後、、、

442:デフォルトの名無しさん
05/03/10 00:24:38
テレビで観た外国人犯罪者。刑務所で個室をもらい、支給されたパソコン
でお勉強。本国から雑誌や新聞、書籍を送ってもらい、専属の通訳と翻訳家
つきで、食事はその国にあわせたもの。日本人受刑者は狭い部屋ですし詰め。
しばらくして、別のニュースでホームレスが川に落ちたインスタントラーメンを
取ろうとして転落、そのまま凍死してしまったという記事を読んで、せつなくな
ってしまった。
新聞で日本で暮らす脱北者のインタビュー記事。「生活保護の支給額が足りない」
「支援してくれないので日本は冷たい」だと。
別の記事で生活保護を受けられなかった母子がおんぼろアパートで餓死。
この国は本当に狂っている。

443:デフォルトの名無しさん
05/03/10 00:32:05
・・・という内容をghcで矛盾を含まずーディングしはじめる兵(ツワモノ)が現れるのを
目の当たりにすることになったのです。  〜Fin.〜   (2ch.千夜一夜物語)

444:デフォルトの名無しさん
05/03/10 00:58:20
真理です

445:デフォルトの名無しさん
05/03/11 00:20:02
生活苦や迫害から逃れるため北朝鮮を脱出した元在日朝鮮人
大阪府八尾市に支援者が用意した2部屋のアパートで
月約17万円の生活保護と支援者からのカンパで暮らす。

ソウルに住む長男も呼び寄せたいというが、
「いまの生活保護額では厳しい」と悩む日々だ。

URLリンク(www.asahi.com)

         確定申告済ませたか?

      俺も17万円と2部屋のアパート欲しい。      
   豊な生活送るには、17万円ポッチじゃ、まだタリン。 
     おまえ等の税金もっともっと よ こ せ!

446:デフォルトの名無しさん
05/03/11 00:31:20
ghcならコンパイル可能

447:デフォルトの名無しさん
05/03/11 00:43:13
ghcだからこそコンパイルエラーの結果に終わります。 こんなんに真値判定出されてたまりますか。

448:デフォルトの名無しさん
05/03/12 20:33:41
URLリンク(www.haskell.org)

449:デフォルトの名無しさん
05/03/12 23:28:12
新たな教典が来ましたね。
もちろんバグはありませんので、安心してご利用ください。

450:デフォルトの名無しさん
05/03/13 02:47:22
>>449 =モズクズ様↓
URLリンク(www.gema3.net)

451:デフォルトの名無しさん
05/03/14 14:32:35
SOE本とCraft本で、どちらがお勧めですか?

452:デフォルトの名無しさん
05/03/14 16:41:23
>>451
両方

453:デフォルトの名無しさん
05/03/14 23:22:35
今年度は、Hugsの新版出ないの?

454:デフォルトの名無しさん
05/03/15 00:02:58
Mar 2005 releaseがでてるけど

455:デフォルトの名無しさん
05/03/15 08:28:37
あれ、いつの間に。

456:デフォルトの名無しさん
05/03/15 08:32:05
Charが、うにコードに対応したんだ。

457:デフォルトの名無しさん
05/03/20 10:13:33
hugs98-Mar2005-patched.tar.gzキテル━━━(゚∀゚)━━━ !!!!!
updated with urgent bug fixes

458:デフォルトの名無しさん
05/03/23 00:58:19
同じ関数型言語でもHaskellのほうがSchemeより易しくない?
SMFの解析を書き始めてるけど、コストをあまり考えすぎなくてよい気がするし、
Schemeよりも簡潔に書けるし、実行速度もいくぶん速い。
いまのところ、手続き型の処理を書かなくても
(コストを気にしない限りは)それほど書くのが難しくない。
ただ、効率を気にしだすと書き換えるのは難しいのかな?

459:デフォルトの名無しさん
05/03/23 07:53:51
素朴な疑問だが、lazyな言語で割り込み処理(シグナル等)はどうやって書くのだろう。
割り込み時の状態はどう定義されるのだろうか。


460:デフォルトの名無しさん
05/03/28 13:39:35
>>459
もれも良く分からんが、MIT pressから出てるSICPっていう本読んでると
無限ストリームっていうのが出てくるから、それ使うんじゃない?
A Gentle Introduction to Haskellっていう、Haskellの紹介文書
にも無限ストリームを使ったクライアントーサーバー処理の例が出てくるよ。


461:デフォルトの名無しさん
05/03/28 15:15:52
数学理論に立脚した言語で現実世界を対象としたプログラミングを行うことは間違いだ

462:デフォルトの名無しさん
05/03/28 15:16:30
>>461
はい?もう一度言ってもらえますか?よく見えなかったので。

463:デフォルトの名無しさん
05/03/28 18:39:05
>>459
たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
もの凄く難しい。

>>460
それは単なる入出力ではなかろうか。

464:デフォルトの名無しさん
05/03/28 20:05:44
イベントや割り込みであろうが入出力には違いないだろ
辻褄が合ってればいい

465:デフォルトの名無しさん
05/03/28 20:08:30
割込みは「単なる」入出力とは違うってことだろ

466:デフォルトの名無しさん
05/03/28 23:35:57
ghcでバイナリデータをバイト単位で扱うときって、Word8を使えばいいの?

Charだと数値との比較ができなくて不便。

467:デフォルトの名無しさん
05/03/29 01:36:32
MacOS X 10.3 で Haskell を使うのにお勧めの方法は何でしょうか?
Hugs98 か ghc になると思うのですが。 fink には入っているのは
どちらも Hugs98 2001-Feb と ghc 6.2 で少々古かったです。

468:デフォルトの名無しさん
05/03/29 02:58:49
Mac使うのを止めるのがオススメ!

469:デフォルトの名無しさん
05/03/29 04:16:23
そうだね。
爪弾きにされ、余計な苦労ばかり増えて良いところなんて一つもないし。


470:デフォルトの名無しさん
05/03/29 08:45:40
finkに頼らんでもHugsなら自分でmakeすればOKだし
GHCは本家にバイナリが用意してある

471:デフォルトの名無しさん
05/03/30 02:58:36
マイナー言語やる上で Mac は悪くないプラットフォームなんだけどね。
ML も主要なのは殆ど対応しているし。

472:デフォルトの名無しさん
05/03/30 03:06:14
haskellよりもMLの方が文法綺麗じゃないですか??そんなことないかな…

473:デフォルトの名無しさん
05/03/30 03:15:35
ML、特にSMLはDefinitionが出て以来そのままだからなあ(97年に改訂されたけど)。
Haskellの方も一応98はあるけど、そうじゃない部分は随時面白い話があるたびに
手を入れてきた感じなのは否めないのかも。


474:デフォルトの名無しさん
05/03/31 19:07:35
URLリンク(www.amazon.co.jp)
URLリンク(www.amazon.co.jp)

この 2 冊が欲しいのですが、中を確かめてから欲しいので
都内で在庫がある店知りませんか?
東京駅〜秋葉原〜神保町あたりだと助かります。


475:デフォルトの名無しさん
05/03/31 22:26:11
グランデに電話してみれば?


476:デフォルトの名無しさん
05/03/31 22:33:33
> 474
Haskell: The Craft of Functional Programmingはかなりおすすめです。
買って損はないと思います。

477:474
皇紀2665/04/01(金) 10:58:40
結局 Amazon で注文しました。

URLリンク(www.hatena.ne.jp)
ここに載っててありそうなところには電話かけましたが
店頭に在庫はないみたいでした。Amazon がない時代は
みんなどうしていたんだろう…。大学生協で取り寄せかな。

478:デフォルトの名無しさん
皇紀2665/04/01(金) 18:28:57
>>474
神田行けばいくらでもあるだろ。
デカイ本屋で在庫あるか訊いてみろ。

479:474
皇紀2665/04/01(金) 19:57:19
>>478
私には >>477 以外に出てくる本屋以外にデカイ本屋は知りません。
おすすめのコンピュータの洋書をあつかっている店の名前が分かる
なら教えてください。

480:デフォルトの名無しさん
int 2ch =05/04/01(金) 20:48:22
>>479
URLリンク(www.book-kanda.or.jp)
URLリンク(www.book-kanda.or.jp)


481:474
int 2ch =05/04/01(金) 21:56:48
明日、神田を周ってこようと思います。
ありがとうございました。


482:デフォルトの名無しさん
int 2ch =05/04/02(土) 12:12:07
>>474
君見て自分も思い出したように買ったよ
まあ回っても見つからないと思うよ

483:474
05/04/03 11:46:47
昨日行ってきました。
水道橋駅を降りて、神保町駅まで歩きその周辺の本屋を巡りました。
コンピュータの洋書を扱っているのが、三省堂の本店しか見つける
ことができませんでした。在庫はあらず。

いくらでもあるとのことなのですが、探しかたが悪いのか、
>>482 さんの言う通りなのか不明です。

Amazon から Haskell: The Craft of Functional Programming
は届いたので読みすすめてます。結構面白いです。

484:デフォルトの名無しさん
05/04/04 04:15:17
>>483
> コンピュータの洋書を扱っているのが、三省堂の本店しか見つける
> ことができませんでした。

え、マジ? それは探し方が悪いのでは。


485:474
05/04/06 17:39:21
そうですよね。もっと探検してみます。

486:デフォルトの名無しさん
05/04/07 12:56:04
オレも他にはゆうりんどう(字わからん)くらいしか思いつかない。いいとこあるなら教えてcray。

487:デフォルトの名無しさん
05/04/07 14:51:05
洋書なんて読むなよこの非国民が

488:デフォルトの名無しさん
05/04/07 15:41:08
英語も読めないの?国辱。

489:デフォルトの名無しさん
05/04/07 20:21:03
洋書 = 英語書かよ、この拝米主義者め

490:デフォルトの名無しさん
05/04/07 20:31:05
英語=拝米の方がよっぽど(ry

491:デフォルトの名無しさん
05/04/07 20:48:29
Haskell: The Craft of Functional Programming は英語だろ?
国辱どもが。

492:デフォルトの名無しさん
05/04/07 20:57:10
当たり前のことを言うな一知半解野郎

493:デフォルトの名無しさん
05/04/07 21:30:11
これがゆとり教育の弊害か。確かに国辱。

494:デフォルトの名無しさん
05/04/07 22:14:10
>>487-493
レベルの低い話は止めろ

495:デフォルトの名無しさん
05/04/08 22:34:40
科学とかに関しては日本なんてどうでもいい罠。


496:デフォルトの名無しさん
05/04/09 09:19:13
Haskellの勉強してると類(kind)という言葉が出てくる。
手持ちの関数型言語の参考書では見かけないので、類を扱うのは比較的
珍しいことなのかと思うのだけれど、どう?
なんでHaskellには類が必要なの?

497:デフォルトの名無しさん
05/04/09 13:07:49
Haskellだと、普通の多相型([]とかMaybeとか)に加えて
「型構築子から型構築子への写像」(StateTとか)のようなものを定義できるから、
単に「無引数の型構築子」だとか「1引数の型構築子」とかいうだけじゃ不十分だからだと思う。

まあ、似たような機能のあるC++では「類」なんて聞いたこともないんだけど。
関数型言語についてはよく知らんので誰かフォローよろしく。

498:デフォルトの名無しさん
05/04/09 13:52:32
WinXPで動くHaskellのコンパイラってある?

499:デフォルトの名無しさん
05/04/09 13:59:36
>>498
え?GHCがwindowsで動くでしょ???

500:デフォルトの名無しさん
05/04/09 14:23:03
           ∩ノ
          / つ
         / /  / ̄ ̄ ̄ ̄
      ∧ ∧/   < 500ゲットぉぉぉぉ!
     ⊂(゚Д゚ ) 彡   \
        ⊂彡       ̄ ̄ ̄ ̄
   ____●●●___ バイーン
 / 〇 〇 \|/  /|
 | ̄ ̄ ̄ ̄ ̄ ̄ ̄|

501:デフォルトの名無しさん
05/04/09 17:40:30
498ではないが、
WINXP sp2 で GHC のインストーラはエラーで落ちました。
hugs98 は簡単にインストールできました。

502:デフォルトの名無しさん
05/04/10 11:03:22
言語仕様を見るとHaskellの方がはるかに機能的に見えるのだけど、実用面を見るとHaskellはボロボロ。
結局、開発するならOCamlに軍配があがるんだよね。

503:デフォルトの名無しさん
05/04/10 11:31:38
だから品質には期待するなとあれほど(ry

504:デフォルトの名無しさん
05/04/10 13:23:42
だからghcにバグはないとあれほど(ry

505:デフォルトの名無しさん
05/04/11 11:57:34
>>497
Haskellよく知らんけど、合ってるんじゃん?
C++のテンプレートは展開してからチェックするので、いらないんでしょ。たぶん。

506:デフォルトの名無しさん
05/04/11 12:08:44
>>463
>たぶんlazyな言語に対して割り込みのformal semanticsを与えた人はいないと思う。
>もの凄く難しい

Haskellよく知らんので何か勘違いしてるかもしれんが、

URLリンク(research.microsoft.com)

のA semantics for imprecise exceptionsの5.1節とか
Imprecise Exceptions, Co-Inductivelyは違うの?


507:デフォルトの名無しさん
05/04/11 20:32:57
Haskellで正規表現は標準でサポートされているのですか?

508:デフォルトの名無しさん
05/04/11 20:44:09
>>507
URLリンク(www.google.co.jp)

509:デフォルトの名無しさん
05/04/15 17:30:13
>>501
3月21日位にインストーラーが変わっている様なのですが、それでインストールしても
駄目ですか?
当方はXP SP2でインストールできています。


510:デフォルトの名無しさん
05/04/15 19:37:33
つーかインストーラーぐらいちゃんと作れませんか?

511:501
05/04/16 12:07:17
>>509
最新版でインストールもできましたし、ちゃんと動きました。
ありがとうございます。


512:デフォルトの名無しさん
05/04/17 22:00:14
imprecise exception 云々よりどっちかというと Asynchronous exceptions in Haskell の方が該当する希ガス。

513:デフォルトの名無しさん
05/04/17 22:05:22
この言語扱うのに数学の知識必須みたいだな。初めて使ったが…

514:デフォルトの名無しさん
05/04/17 22:19:40
そうなの?どの辺でそう感じた?

515:デフォルトの名無しさん
05/04/17 22:33:46
>>514
いや、大したことじゃないんだけど、集合論とか。

516:デフォルトの名無しさん
05/04/18 01:09:42
文系お断り言語

517:デフォルトの名無しさん
05/04/18 11:59:50
Text.Regex は入力を不必要に最後まで読んでくれたりして微妙に嬉しくないんだよなあ。

518:デフォルトの名無しさん
05/04/18 23:56:27
で、この言語なんて読むんだ?
はすくぇる?

519:デフォルトの名無しさん
05/04/18 23:57:21
ハスケルカリー

520:デフォルトの名無しさん
05/04/20 23:24:41
GHCのコンパイルがなかなか終わらない。

ひょっとして、マシンパワーがかなり必要なの?
普段使っているのはおんぼろラップトップなんだよね。

521:デフォルトの名無しさん
05/04/20 23:45:27
>>520
こちとら、PowerBookG4(867MHz,RAM640MB)で
2ステージ+testsuite が6〜8時間。

522:520
05/04/21 08:32:54
朝起きたら無事終わってた
GHCは普通のコンパイラとは内部構造がかなり違うようですな。

523:デフォルトの名無しさん
05/04/22 20:52:35
某スレでハスケルでGUIは辛いと言われてしまいました。
誰か反論の文句をおねがいします。

524:デフォルトの名無しさん
05/04/22 20:54:26
だからあれほどHaskellは実用アプリケーション作成向きでは無いと(小一時間

525:デフォルトの名無しさん
05/04/22 21:08:24
だからあれほどghcは完璧だと(ry

526:デフォルトの名無しさん
05/04/23 05:07:16
情処の記事を読んで触ってみた。


527:デフォルトの名無しさん
05/04/23 13:52:46
今月からFPの連載だね。

528:デフォルトの名無しさん
05/04/23 23:02:55
FP ってなんですか?

529:デフォルトの名無しさん
05/04/24 00:06:54
一時期流行った自分視点のゲームだろ

530:デフォルトの名無しさん
05/04/24 13:13:48
そりゃFPSだ。

動的計画法のことだろ?

531:デフォルトの名無しさん
05/04/24 18:54:43
Functional Programmingのことかと思った。

532:デフォルトの名無しさん
05/04/24 21:37:20
> 動的計画法のことだろ?
それはDP(dynamic programming)

533:デフォルトの名無しさん
05/04/24 23:26:26
わかりにくいネタでごめん

534:デフォルトの名無しさん
05/04/25 20:31:20
まじでどこで連載してるのか教えてくれ

535:デフォルトの名無しさん
05/04/25 20:56:53
情報処理学会誌ですね。
久しぶりにビニールを開けてみました。
相変わらず読むところが少ない…。

536:デフォルトの名無しさん
05/04/27 11:28:18
辛ければヨーグルトを使う

537:デフォルトの名無しさん
05/04/29 15:38:56
GHCがpanicっていってコンパイル止まったよ。
間違ったソースの中には対応しきれないものがあるようだ。

538:デフォルトの名無しさん
05/04/29 16:42:43
>>537
嘘はいけない。ghcにバグはない。

539:デフォルトの名無しさん
05/04/29 16:49:25
ghc のバグじゃなくてコンパイルするソース側の

540:デフォルトの名無しさん
05/04/29 16:57:37
>嘘はいけない。ghcにバグはない。

なんか凄い事聞いた気がする。
ほんと?

541:デフォルトの名無しさん
05/04/29 18:00:14
ほんとにそうならghcのwebにバグレポートのリンクがあったりしないべ。


542:デフォルトの名無しさん
05/04/29 18:49:30
Financial Planner

543:537
05/04/29 21:25:14
ほんとだよ。GHC cannot process input file. please report this to us とか出たもの。
もちろんソースは正しくないやつなんだが、それでもコンパイラが適切なエラーメッセージを
出せずに止まったことは事実。

544:デフォルトの名無しさん
05/04/29 22:13:13
ああ、拡張機能や新機能を使うと稀に起こるよ、panic。
ちゃんと報告してあげて下さい。

545:デフォルトの名無しさん
05/04/30 18:45:06
例のHaskell連載って公開してるんだね
URLリンク(www.ipsj.or.jp)

546:デフォルトの名無しさん
05/04/30 19:44:34
ハスケル!ハスケル!

547:デフォルトの名無しさん
05/04/30 21:27:04
    _  ∩
  ( ゚∀゚)彡
  (  ⊂彡
   |   | 
   し ⌒J

548:デフォルトの名無しさん
05/05/01 20:14:08
LISP Macro みたいなことできますか?
-- dotimes :: n -> (n -> IO()) -> IO()
dotimes n f = __dotimes 0
where __dotimes i | i >= n = return ()
| otherwise = do (f i)
__dotimes (i + 1)
-- dotimes 10 ( \x -> putStr (show x))
こんなもの?

549:デフォルトの名無しさん
05/05/01 23:02:28
遅延評価だし、アクションが第一級の対象だから、
全ての関数がマクロであるようなものじゃないか?

550:549
05/05/01 23:05:09
なんかピントの外れたことを言ったな。
誰かフォローよろしく。

551:デフォルトの名無しさん
05/05/01 23:19:07
dotimes' n f = sequence_ [ f n' | n' <- [0..n-1] ]
main = dotimes' 10 (putStr.show)


552:無理です。
05/05/01 23:20:58
例えばhaskellのif

if p then c else a
は、

case p of
 True -> c
 False -> a

の構文糖衣とみなせる。逆でもよい。
マクロの代わりになるかどうかは、自分のifをcaseで定義できるかどうかを
考えてみればわかる。

myif

mycase

さあどうぞ。


553:デフォルトの名無しさん
05/05/01 23:29:12
myif :: Bool -> a -> a -> a
myif p c a = case p of True -> c; False -> a

でいいんじゃないのか?

554:デフォルトの名無しさん
05/05/01 23:37:45
>>553
thenとかelseはどこいった?

555:デフォルトの名無しさん
05/05/01 23:43:22
シンタックスを定義できなてもマクロと言えると思うが。

556:デフォルトの名無しさん
05/05/01 23:49:16
↑それで消費者が納得すると思ってんのか?

557:デフォルトの名無しさん
05/05/01 23:52:37
>>555
関数マクロと言うべきか。


>>548の回答としては、

Q.LISP Macro みたいなことできますか?
A.できません。


558:デフォルトの名無しさん
05/05/02 00:05:54
haskellでは
a `lambda` (a + 1)
の様な表現ができないのが本質的っぽいね。

559:デフォルトの名無しさん
05/05/02 00:11:04
つまり、遅延であろうがなかろうが、LISPのようなマクロを書けるかどうかは
引数評価を自分でコントロールできるかどうかにある。
少なくともLISPのマクロ内に出てくるシンボルみたく、引数の一部を
評価せずにキーワードそのものとして扱うみたいな仕組みがないと。

560:デフォルトの名無しさん
05/05/02 00:25:50
「遅延評価」の意味で「評価」と言うと意味が違うと思う。
引数の評価をコントロールするだけならhaskellでもできる。
「解釈」と言えばいいのかな?

561:デフォルトの名無しさん
05/05/02 00:39:06
LISPのマクロはdefineを含むコードを生成できるけど、Haskellではそのような真似はできないはず。


562:デフォルトの名無しさん
05/05/02 13:13:17
HaXmlで下のinputからoutputのような出力を得たいんですがどのようにすれば
良いでしょうか?

---input---
<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply
their own equality test
</description>

---output---
["deleteBy", "similar to delete, but it allows the programmers to supply
their own equality test"]


<description>の中の<f>の処理がうまく行かず下のような結果になってしまい
ます。<description>の中のテキスト部分だけを抜き出したいです。別リスト
にしないで1つの文字列として。

["deleteBy", "similar to ", "delete", ", but it allows the programmers to supply
their own equality test"]


563:562
05/05/02 13:22:01
コードとサンプルデータを載せます。

import System.IO
import System.Environment
import Text.XML.HaXml
import Text.XML.HaXml.Pretty (content)

main :: IO ()
main =
do ~[arg] <- getArgs
h <- openFile arg ReadMode
str <- hGetContents h
case xmlParse "list.xml" str of
(Document _ _ (Elem _ _ contents))
-> mapM_ print $ map getCont contents

getCont = map content . contFilter

contFilter :: CFilter
contFilter = f `o` (tag "function")

f = cat [ ("name"?) , multi txt `o` (keep /> tag "description") ]


564:562
05/05/02 13:22:59
<module name="List">

<function name='deleteBy' type='(a -> a -> Bool) -> a -> [a] -> [a]'>
<description>
similar to <f>delete</f>, but it allows the programmers to supply their own equality test
</description>
<example>
<in>deleteBy (\x y -> y `mod` x == 0) 4 [6,8,10,12]</in>
<out>[6,10,12]</out>
</example>
</function>

</module>


565:デフォルトの名無しさん
05/05/17 14:30:17
今月の文章は先月の和田先生のよりわかりにくいなあ。
例題をどう解くかの説明が全くなくて、説明もHaskellの説明にはなってるけど
例題のプログラムの説明としてはかなり端折られてるのが原因かな。




566:デフォルトの名無しさん
05/05/17 22:34:11
バイナリファイルを弄りたいんですけど
Haskellでビット演算の関数とか演算子とか
あれば教えてください。

567:デフォルトの名無しさん
05/05/17 23:38:07
:browse Bits

568:デフォルトの名無しさん
05/05/18 22:14:20
>>567
ありがとうっす

569:デフォルトの名無しさん
05/05/20 23:02:42
モナドって全然わかない

570:デフォルトの名無しさん
05/05/20 23:16:00
↑日本語もわかない人

571:デフォルトの名無しさん
05/05/21 01:33:08
最近自分は悟った。

モノイドとか圏論とかの背景思想を無視して
使う立場だけからいうと
モナドは数珠繋ぎ強制ギプスみたいなものだと。

(IO Char)とか(IO Int)とかの型は
CharやIntの値がくるまれたカプセルみたいなもんだ。
ちなみにIO ()の()はCでいうvoid型
return xx とやると普通の値もIOモナドで包むことができる。

572:デフォルトの名無しさん
05/05/21 01:33:49
ただしIOモナドは一度くるんだら中身を取り出す方法がない。
IO型の関数を普通の関数と組み合わせても型違いで
コンパイルエラーになる。
(IO ()ももちろん型違いでエラー)

そこでモナドの中身の値を
橋渡しするアダプタ(>>=)を使う。

結局>>=や>>で(IO xxx)型の関数同士やreturn xxで
数珠繋ぎにするしかないように強制される。

573:デフォルトの名無しさん
05/05/21 01:42:17
そいつは面倒だあ

574:デフォルトの名無しさん
05/05/21 01:43:08
IOモナドってGPLみたいだなとか思った。

575:デフォルトの名無しさん
05/05/21 01:48:49
数珠つなぎのしくみや値を包みこむ性質を利用して
他にもいろいろなモナドがあるし自分でも作れる(かもしれない)

Stateモナドは数珠繋ぎを利用して
IOモナドみたいな状態遷移を自分で作れる。

Maybeモナドは値を包むほうが主眼のモナド
実際の値の代わりにNothingというダミーを
突っ込んでおくことができる。
データベースのNULL値みたいに使える。

576:デフォルトの名無しさん
05/05/21 01:57:53
モナドと聞くと王監督の顔が思い浮かぶのは何故?

577:デフォルトの名無しさん
05/05/21 02:24:06
>>571
>CharやIntの値がくるまれたカプセルみたいなもんだ。
俺にはこの表現がなじまない。
カプセルってのは中身が取り出せてこそのものだよな。
だから、「CharやIntにに関係する何か」くらいの認識しかできない。

578:デフォルトの名無しさん
05/05/21 12:13:59
自分でIO型の関数作れば
前のIO関数から>>=で渡された
中身の生の値をちゃんと自由に扱える。

「取り出す方法が無い」んじゃなくて
「>>=を使って(間接的に)取り出すしか方法が無い」が
正しいかも。

579:デフォルトの名無しさん
05/05/21 12:15:56
monadic I/Oの意味論を破壊して喜ぶって、マゾですか?

580:デフォルトの名無しさん
05/05/21 12:16:44
そーゆーのには、
C言語とアセンブラがお勧め(w


581:デフォルトの名無しさん
05/05/21 12:30:25
>576
ワロス
俺も思いついた

582:デフォルトの名無しさん
05/05/21 16:33:47
もな〜ももなど?

583:デフォルトの名無しさん
05/05/21 20:30:44
>>549
そのとおりだよね。

584:デフォルトの名無しさん
05/05/21 20:44:49
>>583
だからー、
その件はLISPマクロのようには書けないって話だろーが

585:デフォルトの名無しさん
05/05/21 21:04:10
>>559
名前渡し?遅延評価ってそういうことなのでは?

586:デフォルトの名無しさん
05/05/21 21:12:59
名前をキーワードとして扱う?CLtL4の仕様ですか?w

587:566
05/05/21 21:23:20
某バイナリファイルのヘッダ構造体の読み込み関数が
だいたい目処がたってきますた。

ところでdata宣言で作った構造体?にたいする
Javaのシリアライズみたいな仕組みやライブラリって
Haskellにはないんすかね?
リフレクションみたいな仕組みがないと無理?

ファイルフォーマットをリストで与えて結果もリストで返すみたいなのは
できそうだけどそれじゃせっかくの強力な型システムが活かせないような、、

588:デフォルトの名無しさん
05/05/21 21:25:51
>>585
あ、違うか
名前渡してないもんね
普通の意味の値の他に名前も値にできるようでないと圏論的には不完全なようなキガス

589:デフォルトの名無しさん
05/05/21 21:28:21
とゆーことは変数のポインタでいいのかどうか

590:デフォルトの名無しさん
05/05/21 21:39:32
>圏論的には不完全

というと?

591:デフォルトの名無しさん
05/05/22 16:51:02
ちょっと質問です。

二項関係 r の反射的・対称的・推移的閉包に (x,y) が属するかどうかを判定する関数
inEqvCl ってのを書いてみたんですけど、もうちょっとすっきりした書き方とかないでしょうか?

inEqvCl :: Eq a => (a,a) -> [(a,a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x,y) s = chk s y x
 where
  chk lst v u | v == u = True
        | v `elem` ux = True
        | otherwise = or $ map (chk lst' v) ux
   where
    lst' = [ p | p <- lst, u /= fst p, u /= snd p ]
    ux = do p <- lst
        if u == fst p && u /= snd p
          then return $ snd p
          else if u == snd p && u /= fst p
            then return $ fst p
            else fail ""

実行例
(2,1) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> True
(1,6) `inEqvCl` [(0,2),(3,4),(5,4),(1,5),(5,0),(6,7),(8,7)]
=> False


592:デフォルトの名無しさん
05/05/22 21:57:54
>>591
こんなのでどうかな。
題意を理解していないので間違ってたらスマソ
import List

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl _ [] = False
inEqvCl (x, y) s
  | x == y = True
  | y `elem` ns = True
  | otherwise = any con ns
  where
    ns = map snd $ filter ((==x) . fst)  exts
    exts = s ++ map (uncurry $ flip (,)) s
    con n = inEqvCl (n, y) (s\\[(x, n), (n, x)])

593:デフォルトの名無しさん
05/05/22 22:23:13
面白そうなのでオレもやってみた。

-- 同値類のリストを算出
classify :: Eq a => (a, a) -> [[a]] -> [[a]]
classify (x, y) [] = [[x, y]]
classify (x, y) (c : cs)
| x `elem` c = (y : c) : cs
| y `elem` c = (x : c) : cs
| otherwise = c : classify (x, y) cs

inEqvCl :: Eq a => (a, a) -> [(a, a)] -> Bool
inEqvCl (x, y) lis = (not . null) (filter (f x y) (foldr classify [] lis))
where f x y c = x `elem` c && y `elem` c

いろいろ最適化の余地があるが。

594:デフォルトの名無しさん
05/05/22 22:32:57
あ、>>593 間違ってるわ。これだと [(3, 4), (1, 3), (2, 4)] とかで
うまくいかない。

595:591
05/05/22 22:42:11
>>592-594

ありがとうございます。
やっぱり短く書けるんですね。

596:デフォルトの名無しさん
05/05/23 22:10:44
無限のリストだと止まらなくなるかな

597:シミュレーション板GPスレから来ました
05/05/24 01:12:59
PolyGP: A Polymorphic Genetic Programming System in Haskell
↑のプログラムソース PolyGP.tar って、uclのサイトから消えている様ですが、
どこかにバックアップないでしょうか?
よろしく、おながいします。

598:591
05/05/24 05:44:25
とりあえず問題が2つありました。

1. 反射的閉包なんで、inEqvCl (x,x) [] == Trueにならないといけない。

>>592さんのからinEqvCl _ [] = Falseを取り除けばOK。

2. (\\)は最初の1つしか取り除かないので、最初の集合に対称なものがあると拙い。

(\\)の代わりに下の(//)を使って対処。

(//) :: Eq a => [a] -> [a] -> [a]
xs // ys = [ x | x <- xs, x `notElem` ys ]


>>596
無限リストは今回は対象外なので問題ないです。(^^;

599:デフォルトの名無しさん
05/05/27 00:42:11
Haskellの配列の更新(//)は一部変更でも配列全部作り直したり
してるんですか?
リングバッファとかに使っても大丈夫ですか?

600:デフォルトの名無しさん
05/05/27 01:42:54
600

601:599
05/05/27 22:02:30
>>599
自己レス
URLリンク(d.hatena.ne.jp)
ここみるとだめっぽい感じでした

GCが仕事してくれること期待して
配列ガシガシ使い捨てにでもするか

602:デフォルトの名無しさん
05/05/27 22:21:03
いつまでたっても関数型のボトルネックだな>配列・構造体
これが解決しない限り関数型が栄えることは無い

603:デフォルトの名無しさん
05/05/27 22:21:57
俺達でwadlerを唸らせる解を考えよう

604:デフォルトの名無しさん
05/05/28 01:00:55
配列も、マクロな視点で見ればただの変数に変わりない
だから、修正された瞬間複製するのが妥当な戦略だろう
しかし、オリジナルが参照されないとわかっているなら複製する必要ないから複製を省略する。
ここまで考えてふと思いついた。
すなわち差分をもっとけばいいんじゃないかと。
配列n番目更新しますた!更新しますた!という情報を各インデクス毎に持っとくわけよ
配列を全て更新しおわたとしても、またさらに更新するかもしれない
その場合はまたその差分を作るわけよ
するとどうだい?
差分として分解された各配列の要素はまるでりすt(ry

おれには難しすぎたようだ!

605:デフォルトの名無しさん
05/05/28 01:13:09
>>602
Uniqueness Typing

606:デフォルトの名無しさん
05/05/28 05:03:54
配列や構造体もモナドにしたら?

607:デフォルトの名無しさん
05/05/28 08:38:44
starray とかいうモナドがあると聞いたが
漏れは調べてないので諸君調べて報告してくれ

608:デフォルトの名無しさん
05/05/28 11:15:19
マクド


609:デフォルトの名無しさん
05/05/28 13:50:31
>>606
つIOUArray

610:デフォルトの名無しさん
05/05/28 14:11:18
伝説のモナド

611:デフォルトの名無しさん
05/05/28 14:23:54
ナボナ@亀屋万年堂
URLリンク(www.navona.co.jp)

これのことでしょ?

612:デフォルトの名無しさん
05/05/28 20:20:45
>>607
それはスタレイました

613:デフォルトの名無しさん
05/05/28 20:52:42
>>28で紹介されているURLリンク(rrr.jin.gr.jp)のRWikiがNot Foundで見れません。

どうしたらよかとですか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5373日前に更新/259 KB
担当:undef