1 名前:潜伏していた1 mailto:sage [02/02/16 16:55] 何とか生き残れました。 前スレ pc.2ch.net/test/read.cgi/tech/996131288/l50 関連 >>2 以降
509 名前:デフォルトの名無しさん mailto:sage [02/12/06 09:11] ネタ? もともとグラスゴ大のプロジェクトで, 大学の研究者を MSR が引っこ抜いてきて, 継続してる研究だからってかんじか. ってゆ〜か MSR ってマジで全く何の要求も されない,ってウワサっすけど,本当? 個人的に一番参照してるサイモン博士の頁は↓だったりするが. ttp://research.microsoft.com/~simonpj/win32-cheat.html
510 名前:デフォルトの名無しさん mailto:sage [02/12/06 14:02] いや、GHCの最新版で一番最初に出るのがUNIX版なもんで
511 名前:デフォルトの名無しさん mailto:sage [02/12/07 10:04] え,ソースは CVS でいつでも最新だよ? とかボケてみる(w ttp://www*haskell.org/ghc/docs/latest/html/building/winbuild.html 彼らが常用してる開発環境が↑の Windows ビルド用環境ではない, というだけかな,と.
512 名前:デフォルトの名無しさん [02/12/11 20:50] >502 >新しいhugsにはwinhugsはついてないの? オレも見つけられない。どこにあるの?
513 名前:デフォルトの名無しさん [02/12/14 15:59] www.haskell.org/~petersen/haskell/lc2001.html >Emacs in Haskell の計画 これはネタですか?こんなことやってる人いるのかな?
514 名前:デフォルトの名無しさん [02/12/16 06:01] www.haskell.org/humor/ ↑これのどこが面白いのか、誰かひとつ解説してくれ。
515 名前:デフォルトの名無しさん mailto:sage [02/12/20 16:48] その面白さを理解できないあなたはHaskellerではなし。 無理にでも笑いなさい。
516 名前:デフォルトの名無しさん [02/12/22 11:30] yzg.3nopage.com/haskell.jpg 質問なんですが、これってなんていう本だか分かりますか? おそらく、Haskell:the Craft of Functional Programmingの和訳だと思われるのですが…… 検索しても出てこないもので……
517 名前:デフォルトの名無しさん mailto:sage [02/12/24 10:15] >>516 何処ぞの大学か何かの授業用のテキストじゃないかなぁ. 前の年には毎回配ってたプリントを,次の年は一括して印刷・ 簡易製本とかいうパターンって結構あるから
518 名前:デフォルトの名無しさん [03/01/06 23:34] んが
519 名前:IP記録実験 mailto:IP記録実験 [03/01/08 21:43] IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/ 1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:??? そんなわけで、qbサーバでIPの記録実験をはじめましたー。 27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc SETTING.TXT管轄でないということは全鯖導入を視野に、か? 38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l >>27 鋭いです。 73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l >ところで、IPが抜かれて何か今までと変わることってあるのでしょうか? ・今までより、サーバが重くなる。 ・裁判所や警察からの照会があった場合にはIPを提出することがある。
520 名前:デフォルトの名無しさん mailto:sage [03/01/09 02:32] IP記録するのはいいけど串も規制しないと意味ないよな
521 名前:デフォルトの名無しさん mailto:sage [03/01/09 03:16] フシアナ標準にすればいいのに。 困るのは厨くらいだろ?
522 名前:デフォルトの名無しさん mailto:sage [03/01/09 03:58] >>292 どのIPがどの垢かは、ISPが記録してます。 だから、悪い事すればモデムだろとADSLだろうと捕まりますよ。
523 名前:ぶん [03/01/09 14:08] 始めまして。今私はplorogの勉強をしています。問題集に並べ替えのプログラムがあったのですが、よくわからないのでどなたか教えて下さい。 concatenate([],List,List). concatenate([Head | This Tail],List,[Head | That Tail]):- concatenate(This Tail,List,That Tail). sort([],[]). sort([Head|[]],[Head]). sort([Head|[THead|[]]],Result):- Head <= THead, concatenate([Head],[THead],Result). sort([Head|[THead|[]]],Result):- Head > THead, concatenate([THead],[Head],Result). sort([First|[second|Tail]],Result):- First <= Second, concatenate([Second],Tail,Temp), [First|RTail]=Result, sort(Temp,RTail). sort([First|[second|Tail]],Result):- First>second, concatenate([First],Tail,Temp), [Second|RTail]=Result, sort(Temp,RTail). それで、これをどう繰り返せばいいのかがわからないのです。何かわかる人がいたら教えて下さい。
524 名前:デフォルトの名無しさん mailto:sage [03/01/09 14:21] これからは馬鹿って書いただけで訴えられる可能性がでてきたわけで
525 名前:デフォルトの名無しさん mailto:sage [03/01/09 15:05] 既に訴えられているわけだが。ひろゆきが責任を取ってるだけで。
526 名前:デフォルトの名無しさん mailto:sage [03/01/09 17:49] ======2==C==H====================================================== 2ちゃんねるのお勧めな話題と ネットでの面白い出来事を配送したいと思ってます。。。 ===============================読者数: 138720人 発行日:2003/1/9 年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。 そんなわけで、年末に予告したIP記録ですが実験を開始しています。 「2ちゃんねる20030107」 こんな感じで各掲示板の最下部に日付が入ってるんですが、 20030107以降になってるところはログ記録実験中ですー。 んじゃ! ────────────────────────Age2ch─ ■この書き込みは、Age2chを使って配信されています。 ──────────────────────────── Keep your thread alive ! pc3.2ch.net/test/read.cgi/software/1041952901/l50 ────────────────────────────
527 名前:デフォルトの名無しさん mailto:sage [03/01/09 23:41] 2ch板一覧 www.skipup.com/~niwatori/keijiban.htm >728 ( ´∀`)σ)Д`) プニ
528 名前:デフォルトの名無しさん mailto:sage [03/01/10 08:39] そりゃ最初はよほどの大事でもない限りIPを渡すことはしないだろう、 でも物事はだんだんエスカレートしていく物、そのうち密告とかも「誹謗中傷」として IPを渡すようになる、、、
529 名前:デフォルトの名無しさん mailto:sage [03/01/10 10:39] 最近、腐れさん見ないね・・
530 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:09] ★ ひろゆき重大な決意を語る。 live2.2ch.net/test/read.cgi/news/1041069586/l50
531 名前:デフォルトの名無しさん mailto:sage [03/01/10 11:55] 最高裁への上告は認められなくなったから、これで事実上判決確定だよ。 逆転も何もないって。 勢いで上告なんかしても一発で上告却下(門前払い)だよ。 二審も一審を支持。これに対して上告しようにも、 刑事訴訟と同様、自由に上告できるってもんでもないのです。 民事訴訟法312条 (上告の理由) 1項 「上告は、判決に憲法の解釈の誤りがあること その他憲法の違反があることを理由とするときに、することができる。」 www.m-net.ne.jp/~doba/goto/hon.htm ようするに上告しても今の制度では100%無駄。 これで完全終了ってことか。
532 名前:デフォルトの名無しさん mailto:sage [03/01/10 12:24] >>754 まともじゃない掲示板なんて存在意義ないね。 そういうことならここじゃ意味ないと思うが。
533 名前:デフォルトの名無しさん mailto:sage [03/01/10 13:16] スレタイの日本語、微妙におかしいね。
534 名前:デフォルトの名無しさん mailto:sage [03/01/10 15:37] (前略)815様 落ち着け。お前の感じている感情は精神的疾患の一種だ。 静める方法は俺が(中略) 鯖の前で両目をひんむいて「びっくりするほどユートピア」と唱えながらキュウリを(以下略
535 名前:デフォルトの名無しさん mailto:sage [03/01/10 17:05] なつかし。
536 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:26] ひろゆき お前にはがっかりした。 2chにも。さいなら。
537 名前:デフォルトの名無しさん mailto:sage [03/01/10 23:34] 全部ミギーが書きましたって言えば問題ナッシング
538 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:50] ううん、既存のTripodとかじゃなくて新たにそういうシステムを 作っちゃうの。 どう作るかはわかりませんw しかし嵐とか不愉快な対策には「こいつがむかつく」と ひとり1票で投票してきめます。 そしてその人はもうカキコ禁止。 どうやってカキコ禁止にするとかそういうのはわかりませんw
539 名前:デフォルトの名無しさん mailto:sage [03/01/11 00:57] 記録されてる分なにかと現社会より厳しくなった感じします、
540 名前:デフォルトの名無しさん mailto:sage [03/01/11 12:22] とりあえず、訴えられたらスレ住人全員で土下座しよう。 ていうか、それくらいの気概で書き込め。 今までひろゆきに丸投げしていた負担を、個人個人で背負えばイイだけの話だろ。 ここからが本当の市民運動のスタートだよ。
541 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:21] >1 :ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ :03/01/08 17:13 ID:??? >そんなわけで、qbサーバでIPの記録実験をはじめましたー。 IP記録実験 qb.2ch.net/test/read.cgi/accuse/1042013605/l20 IP記録実験PART2 qb.2ch.net/test/read.cgi/accuse/1042020193/l20 これまでのあらすじは あたりに誰かお願い。
542 名前:デフォルトの名無しさん mailto:sage [03/01/11 13:47] マターリしてるのにスレ違いな質問はどーかと。 それに、会社立ち上げたんだし、たぶんにその辺からだろ〜ね。
543 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:35] 2chをはけ口にしていた人はどこで憂さ晴らしをするのか少し興味ある
544 名前:デフォルトの名無しさん mailto:sage [03/01/11 16:42] 漏れはどこもさくさく行ける。 プロバ次第だと思われ。
545 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:47] 漏らすバカが出るだろうというのが一番の問題なんだよ
546 名前:デフォルトの名無しさん mailto:sage [03/01/12 00:56] ごめん、なんで「それを言うなら」になるのかがわからん(^_^;) 後半の批判は批判でいいと思うんだけど、書き込む人間の自己責任ってのとどう関係してるの?
547 名前:デフォルトの名無しさん mailto:sage [03/01/12 11:06] だろ。 461みたいなことばっか起こるだろ。 ろくなことなないな。2ちゃんなんか。 それもやられ損かなぁ? 訴えてやればいいのに。
548 名前:デフォルトの名無しさん [03/01/12 15:22] >>1-517 荒らされる前までのリンク。 なんでプログラム技術板で私が覗いてる全スレでやられてるんだか・・・。
549 名前:デフォルトの名無しさん mailto:sage [03/01/12 20:37] 全ての責任は当事者同士で解決しろってこと 人が書き込んだものに対して賠償するのもアホらしいしな ごく当り前な考えだわな 騒ぐ程のもんでもない わかるか?
550 名前:デフォルトの名無しさん mailto:sage [03/01/12 20:41] プチ法廷ごっこでは、詭弁で開き直る2ちゃん擁護派は強い。 でもリアル法廷ではボロ負け。
551 名前:デフォルトの名無しさん mailto:sage [03/01/12 20:49] 過度の期待は禁物です。
552 名前:山崎渉 mailto:(^^)sage [03/01/13 18:34] (^^)
553 名前:デフォルトの名無しさん mailto:sage [03/01/13 22:25] そんなに世の中が嫌いか。 年収600万円に満たない屑でも愉快に暮らせる楽しい世の中じゃないか。 いちいち爆破するな。
554 名前:デフォルトの名無しさん mailto:sage [03/01/14 10:32] Functional Programming With Haskell www.amazon.com/exec/obidos/tg/detail/-/0077093305/ こんな本が出てました。誰か読んだ人はいますか? あと4月いは損氏の本。といっても仕様書そのままかもしれないけど Haskell 98 Language and Libraries : The Revised Report www.amazon.com/exec/obidos/tg/detail/-/0521826144/
555 名前:山崎渉 mailto:(^^)sage [03/01/15 17:56] (^^)
556 名前:デフォルトの名無しさん [03/01/17 00:03] 標準ライブラリ関数のクイックリファレンス本って無いのかな? 入門本は取り敢えず読んだから、 簡潔な説明と簡単な使用例が有ると嬉しいんだけど。 >>554 の本は、ちょっと違うみたいだし、 1969年にならないと手に入らないって書いてある……バグってるな。
557 名前:デフォルトの名無しさん mailto:sage [03/01/17 10:46] >>554 後者って www.haskell.org/definition/ ↑の最初にある Report ふたつの PS・PDF を 印刷製本したものではとか思われ
558 名前:デフォルトの名無しさん mailto:sage [03/01/17 14:39] research.microsoft.com/Users/simonpj/haskell98-revised/ これだろ
559 名前:山崎渉 mailto:(^^)sage [03/01/23 20:13] (^^)
560 名前:デフォルトの名無しさん mailto:sage [03/01/24 10:19] 圧縮ツール bzip2 の作者 Julian Seward さん、Haskellerになったんですね。 sources.redhat.com/bzip2/#about-author
561 名前:デフォルトの名無しさん mailto:sage [03/01/25 15:44] つってもなー、Haskellerにはlurkerが多いらしいからな
562 名前:デフォルトの名無しさん mailto:sage [03/01/26 15:59] www.haskell.org内にも Seward氏の名前はたくさん出てるから、lurkerではないのでは?
563 名前:デフォルトの名無しさん mailto:sage [03/01/26 20:59] 今日からHaskell使ってプログラミング始めます。 とりあえずHP作ってみた。 haskell.tripod.co.jp/index.html
564 名前:デフォルトの名無しさん mailto:sage [03/01/27 00:30] >>563 (・∀・)イイ! 応援しますよ
565 名前:デフォルトの名無しさん mailto:sage [03/01/27 15:15] >>563 もう解決したんだろうか。":?"
566 名前:デフォルトの名無しさん mailto:sage [03/01/27 16:57] >>564 心強いです。感謝。 >>565 解決しました。感謝感謝。
567 名前:デフォルトの名無しさん mailto:age [03/01/31 15:57] 荒すな
568 名前:デフォルトの名無しさん [03/02/03 22:53] WinHugsでテンキーの'/'が効かない件、 バグか仕様か知らないけど、取り敢えず直してみた。 Windowsでプログラム組んだ事無いんで、変な事してる かもしれないけど、一応動いたよ。 *** Wintext.c.origTue Aug 6 07:29:18 2002 --- Wintext.cMon Feb 3 21:20:30 2003 *************** *** 2497,2502 **** --- 2497,2506 ---- goto otherKey; } + if (readKey.KeyCode == '/') { + readKey.IsExtended = 0; + } + return readKey; }
569 名前:デフォルトの名無しさん [03/02/05 16:32] template haskell まだあ〜?
570 名前:デフォルトの名無しさん mailto:sage [03/02/12 03:53] Hoshkell
571 名前:デフォルトの名無しさん mailto:sage [03/02/23 03:23] 素朴な疑問Haskell使ってる人たちって情報系の人ばかり?
572 名前:デフォルトの名無しさん [03/02/26 20:26] 【何処も】情報科学総合スッドレ【板違い】 science.2ch.net/test/read.cgi/rikei/1046173479/l50
573 名前:デフォルトの名無しさん [03/03/12 16:17] 11 March 2003 GHC 5.04.3 Released
574 名前:デフォルトの名無しさん mailto:sage [03/03/12 17:10] どこが変わったのかわかりゃしねぇ。 ところで最近寂れてるな。 やっぱもうネタないのかね。
575 名前:デフォルトの名無しさん mailto:sage [03/03/12 19:03] Haskellコミュニティは議論は盛んなんだけどなー
576 名前:デフォルトの名無しさん mailto:sage [03/03/12 22:05] はやく日本語で本出ないかなー。
577 名前:デフォルトの名無しさん mailto:sage [03/03/13 01:50] lazy evaluation ってなんですか?
578 名前: [03/03/15 17:45] 遅延評価 (lazy evaluation) 遅刻の回数を基準にボーナスの額を決めること。 ttp://www.nurs.or.jp/~kneo/m_ti.html
579 名前:デフォルトの名無しさん mailto:sage [03/03/15 23:18] >>577 値が実際に必要となるまで引数の評価を遅らせること。 要求呼び出し(call by need)
580 名前:デフォルトの名無しさん mailto:sage [03/03/15 23:23] 命令型言語ではほとんど実現されていない。 引数の評価は何らかの副作用を伴うことがあり、 引数がいつ必要になるか正確に知るのは難しい。 また、要求呼び出しはスタックによる実現が難しい。
581 名前:デフォルトの名無しさん [03/03/16 00:47] www.generic-haskell.org/ ここで作られてるコンパイラを使っている人はいますか?
582 名前:デフォルトの名無しさん mailto:sage [03/03/16 23:20] >>579-580 説明ありがとうございます。
583 名前:デフォルトの名無しさん mailto:sage [03/03/17 12:38] Haskellerの中にはまたストリームベースを唱えている人もいるようだが
584 名前:デフォルトの名無しさん mailto:sage [03/03/17 23:18] ttp://www.sampou.org/haskell/report-j/preface-13.html
585 名前:デフォルトの名無しさん mailto:sage [03/03/18 13:48] 意味不明でっす
586 名前:デフォルトの名無しさん mailto:sage [03/03/18 20:49] >>583 この板にも居ますよ。たぶん数学屋の方でしょうけど。 ところでデータ構築子って理論的にカリー化できないのでしょうか? 最弱頭正規形を作ればいいのだから可能なのでは?と思いますが。
587 名前:デフォルトの名無しさん mailto:sage [03/03/19 13:58] 可能だからといって言語仕様にいれるとは限らないでしょう その辺は言語設計上の様々な観点を 考慮しながら決定するということで
588 名前:デフォルトの名無しさん [03/03/20 11:04] > 586 カリー化されてるんじゃないの?
589 名前:デフォルトの名無しさん mailto:sage [03/03/20 12:49] 余裕でっす
590 名前:デフォルトの名無しさん mailto:sage [03/03/20 20:56] されているね、十分。 ----code data Tree a = Node a [Tree a] instance (Show a) => Show (Tree a) where show (Node item xs) = show item ++ show xs -----実行 *Main> :type Node 1 forall a. (Num a) => [Tree a] -> Tree a *Main> Node 0 (map (Node 1) (map (map (flip Node [])) [[2,3],[4,5]])) 0[1[2[],3[]],1[4[],5[]]] ----- それとも、もしかして、こんなん? -----code追加 test (Node a) = a -----予想実行 *Main > test (Node 0) 0 *Main > test (Node 1 []) 1 ----- 上はともかく、下はあってもおかしくないし、欲しいな。 あとで少し探してみるか…。
591 名前:586 mailto:sage [03/03/23 22:27] >>588-590 すでに可能だったのか・・。 すまんかった。
592 名前:デフォルトの名無しさん [03/03/24 02:45] Windows版のHugsって、ドキュメントのバージョンがずれてない? .hlp .pdf .htmlが古くて、.chmだけちょっと新しいような? あと、Trexライブラリがうまく使えないんだけど、 もしかして再コンパイルが必要なのかな? Hugs mode: Restart with command line option +98 for Haskell 98 mode Reading file "C:\Hugs98\libraries\Hugs\Prelude.hs": Reading file "C:\Hugs98\libraries\Prelude.hs": Type :? for help Prelude> :load Hugs.Trex Reading file "C:\Hugs98\libraries\Hugs\Trex.hs": ERROR "C:\Hugs98\libraries\Hugs\Trex.hs" - Illegal export of a lone data constructor "EmptyRec"
593 名前:デフォルトの名無しさん [03/03/25 08:06] はあー、MLはまだ何とかなりそうだが、haskellさっぱりわかんね。
594 名前:デフォルトの名無しさん mailto:sage [03/03/25 15:07] 漏れは逆にMLの構文がわけわからん、つーか好みに合わん。 Haskellも一部複雑だけどね。 ttp://www.teu.ac.jp/kougi/koshida/Prog6/ とか見て動かしてみれば慣れるよ。
595 名前:デフォルトの名無しさん mailto:sage [03/04/05 15:58] haskell.org維持費用捻出できなくなったのかよ
596 名前:デフォルトの名無しさん mailto:sage [03/04/05 16:02] ワラタ 2ちゃんねらーで金出してやれよ。 トップページのλの隣にモナー飾ってもらえるかもしれんぞ。
597 名前:デフォルトの名無しさん mailto:sage [03/04/05 17:32] >>595 April fool じゃないのか?
598 名前:デフォルトの名無しさん mailto:sage [03/04/05 20:53] そうなら、もう消すだろ
599 名前:デフォルトの名無しさん mailto:sage [03/04/06 12:06] 1 Apr 2003 のニュースだから、永久保存かも
600 名前:600 [03/04/08 17:22] でも、去年は April fool なかったみたい age
601 名前:山崎渉 mailto:(^^) [03/04/17 15:36] (^^)
602 名前:デフォルトの名無しさん [03/04/25 17:31] ホシュ
603 名前:デフォルトの名無しさん mailto:sage [03/04/27 01:31] このゴールデンウィークにでも勉強したいと思いまフ。
604 名前:デフォルトの名無しさん [03/04/27 05:18] これ、行列の対角化とかできますか?
605 名前:デフォルトの名無しさん mailto:sage [03/04/27 14:04] 対角化の計算を自分で書けばもちろんできる。 行列計算用のモジュールも公式サイトから辿れる。 あとはやりたい本人の裁量次第でいくらでも。
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とか)毎の(内部状態を保持する)モナドを導入することで*分離*してるだけだ。
707 名前:デフォルトの名無しさん mailto:sage [03/07/15 18:34] >>705 701のイメージはあってるが、 > あと、遅延実行されるのでそう実装しても効率は悪くならないと思う。 遅延実行だからこそそういう式の組み立てと式の保存をやらないといけないわけで、 むしろ遅延評価だからと言ってそういう実装をするととんでもないことになる というべき。 通常の式の評価でも下手に(末尾)再帰すると未評価の式の列が莫大になって すぐオーバーフローする。
708 名前:701 [03/07/15 21:26] 大雑把に読みました。後半のパーサは読み飛ばしましたが… データ型としてのモナドは、要するにC++のクラスtemplate、のようなもの…ですよね? ということは、IO a -> aな関数が記述不可能なのは、言語の外を相手にしたIOモナドに限った制限で 一般的にはそんな制限は無い、で合ってます? 簡単なサンプルコードどこかにないかな…
709 名前:デフォルトの名無しさん mailto:sage [03/07/15 21:44] >>708 リストから成分を抽出できるでしょ。
710 名前:デフォルトの名無しさん mailto:sage [03/07/16 00:34] >>709 ありがとです。 で、>>681 氏と同じ疑問に行き当たるわけですが… リストが状態を持っているとは思えないのですが、なぜモナド? (a, b)とか他の一般の構造化型はモナドじゃ無いですよね。
711 名前:デフォルトの名無しさん mailto:sage [03/07/16 01:00] >>710 リストを丸ごと全部で値と思わずに一部だけ更新したいんじゃない? 一部だけ更新するような操作には普通副作用がある。 …違うかな?
712 名前:デフォルトの名無しさん mailto:sage [03/07/16 01:52] リストは >>= と return がモナド演算の法則を 満たしているからモナドなんじゃないかな (a,b)とか一般の構造型はコンテナの中身の個数が1個ではない定数なのでうまく モナド演算を定義できないような気がする リストモナドの中身は任意個数。IOモナドは1個固定。
713 名前:デフォルトの名無しさん mailto:sage [03/07/16 02:29] 眠れない… えーと、要するに、必然性は無いけど、 モナドということにすると [a] >>= (\e -> return (f e)) みたいな便利機能として使えるので モナドということにしてある、ということですか。 >>711 よく見て無いのですが、ライブラリリファレンスにMutable ArraysとしてIOArrayが書かれてますので、 もしリストモナドで一部の更新が可能なら、こんなもの用意しないと思うので、それは違う気が (我ながら無茶苦茶な論法だ…)
714 名前:デフォルトの名無しさん mailto:sage [03/07/16 02:51] あれもこれも、Haskellの和書が出ないのが悪い。
715 名前:デフォルトの名無しさん mailto:sage=705 [03/07/16 10:48] >>707 すまんが、そういうふうにする以外の方法が自分には想像できない。 doも普通の再帰なので問題はなさそうだが? >>711 リストモナド≒内包表記 副作用を発生できるモナドはIOモナドだけです。 >>710 ListとMaybeだけだね。 試しに、(a, b) でMonadを作ってみたが…きつい。 --- instance Monad ((,) a) where (>>=) (sub, main) f = (sub, main') where (sub', main') = f main return main = (bottom, main) bottom = bottom test = do x <- (("a", 2), 1) y <- return $ x+1 return $ y*2 --- *Main> test (("a",2),4)
716 名前:デフォルトの名無しさん [03/07/16 12:02] だれとはなくに 「型構築子」IO はモナドだけど IO a はモナドじゃないよ。 「型構築子」[] はモナドだけど [a] はモナドじゃないよ。
717 名前:デフォルトの名無しさん mailto:sage 702,706,707,709 [03/07/16 12:17] >>713 haskellのリストやアレイはは一部を変更すると全部コピー。 というのは、そのデータ(リスト等)が他の場所で使われるかもしれないから。 一部を変更したということがそのデータを使うプログラムの他の部分にも わからないといけない。 そのためには、使う部分全部をそのデータの内部状態をあらわすモナドでくるんで おく必要がある。 # 変更し終わったら、それはモナドの外に出してもいい。 >>715 701の件については、誤読していた。それ以降の式、ってのが何を指すのかわからない。 それはともかくとして、 (IO/状態)モナド内の計算の実行は、手続き型と同様にできるとおもうけど。 > 副作用を発生できるモナドはIOモナドだけです。 haskellプログラムがわからみればIOも他のモナドもかわらない。 プログラマから見たときも結局は同じこと。謎の内部状態をもつ モナドを受渡しながら処理を順次実行するわけだから。 内部で定義されたモナドでもそのモナドの性質をみとおさなければ、 副作用と同様でしょう。
718 名前:デフォルトの名無しさん mailto:sage 717 [03/07/16 12:30] 別のいいかたをすれば、711が書いているように、普通一部を変更すると 副作用が出るわけで、関数型言語では一般にはそれができない。 だが、その副作用/状態を追跡するモナド(STArray,IOArray等)を引数と して渡し続けながらの順次計算であれば一部変更もできるわけだ。
719 名前:デフォルトの名無しさん [03/07/16 12:45] だれとはなくに 「データ構築子」はファーストクラスだけど 「型構築子」はファーストクラスじゃないよ。
720 名前:デフォルトの名無しさん [03/07/16 13:13] だれとはなくに モナドは「型構築子」の性質であって、データの性質じゃないよ。
721 名前:デフォルトの名無しさん mailto:sage=699,700,705,715 [03/07/16 15:29] >>717 まず、すまんかった。 確かに中身を見なければ副作用を起こすことは可能だ。そちらの言う通り。 以降の式だが、自分は a >>= (\x -> b) の式に出てくるλのことだと思っている。 そして、715のそういうふうにとは、どでかい合成関数を作ってからそれを実行するということ。 もちろん、遅延実行されるので、少し作ってはそれを実行してというふうになると思っているが。 >(IO/状態)モナド内の計算の実行は、手続き型と同様にできるとおもうけど。 main = sequence_ $ reverse $ [putStr "\n", putStr "a", putStr "b"] こう言うのはどうする…? …特殊すぎるか。他は最適化されててもおかしくないやね。 >>718 少なくともIOArrayはIOモナドの一部であってモナドそのものではないと思うが。 >>719 しかし少なくともカリー化はされている。
722 名前:デフォルトの名無しさん mailto:sage [03/07/16 16:39] >>715 サンプルとして活用させていただきます で、勝手にインデント。 module Main where instance Monad ((,) a) where (>>=) (sub, main) f = (sub, main') where (sub', main') = f main return main = (bottom, main) bottom = bottom test = do x <- (("a", 2), 1) y <- return $ x+1 return $ y*2 >>721 表現が悪くて申し訳ないです。そのつもりでした。do A; B… と書いた時のB以降です。
723 名前:デフォルトの名無しさん [03/07/16 17:37] data Id a = Id a deriving Show instance Monad Id where Id x >>= f = f x return = Id foo :: Int -> Id Int foo arg = do { x <- ID arg ; x <- ID (x * 2) ; x <- ID (x + 1) ; return x } というHaskell のプログラムと、 int foo (int arg) { int x; x = arg; x = x * 2; x = x + 1; return x; } は、そっくり。上は副作用をつかってないですけど、 下は副作用をつかっています。 そんだけ。 int
724 名前:デフォルトの名無しさん [03/07/16 18:28] >>723 ID じゃなくて Id
725 名前:デフォルトの名無しさん [03/07/16 20:17] 突然ながら、FFIを試してみたり… #include "hsFFI.h" #include <stdio.h> void __stdcall print_hex(HsInt a) { printf("%x", a); } foreign import stdcall "print_hex" printHex :: Int -> IO () main :: IO () main = do printHex 1234 >ghc ffi.hs ffi_c.hc -fglasgow-exts Warning: retaining unknown function `_print_hex@4' in output from C compiler 動くんですけど、このWarningが消せない…
726 名前:デフォルトの名無しさん mailto:sage ... 717 718 [03/07/16 22:59] >>720 > 以降の式だが、自分は a >>= (\x -> b) の式に出てくるλのことだと思っている。 > そして、715のそういうふうにとは、どでかい合成関数を作ってからそれを実行するということ。 よくわからない。ダイナミックに関数を作ると? > ... > main = sequence_ $ reverse $ [putStr "\n", putStr "a", putStr "b"] 関数ポインタの配列をつくっておいて並べ替えるのかな。 >>721 > 少なくともIOArrayはIOモナドの一部であってモナドそのものではないと思うが。 確かに、モナドはそれぞれIOとSTだ。 モナドの一部っていうのもよくわからないが… monad-awareという感じか。
727 名前:デフォルトの名無しさん mailto:sage [03/07/16 23:31] >>725 __stdcall -> ccall、ffi_c.hc->ffi_c.c で ghc -ffi ffi.hs ffi_c.c とすると何のWarningもなくコンパイルを通った(Windowsではない)。
728 名前:デフォルトの名無しさん [03/07/17 01:25] 誰か Haskell の和書書いてくれよ。 5000円くらいまでなら買うからさ。 和書ないとやる気が出ねぇし、普及なんて夢のまた夢だよ。
729 名前:デフォルトの名無しさん [03/07/17 02:06] Haskellはドイツ語でクシャミの事
730 名前:デフォルトの名無しさん mailto:sage [03/07/17 04:00] >>727 拡張子を変えたら警告が出なくなりました。 よくよく見てみれば.hcってコンパイラが生成したCソース用の拡張子… どうも、お騒がせしました。
731 名前:デフォルトの名無しさん mailto:sage [03/07/19 19:40] >>729 くしゃみが出るくらいに香辛料の効いたカレーを“Haskell Curry”と云う!?
732 名前:デフォルトの名無しさん mailto:sage=721 [03/07/19 22:54] >>726 >よくわからない。ダイナミックに関数を作ると? その通り。 (.) が関数を合成するのと同じように。 >関数ポインタの配列をつくっておいて並べ替えるのかな。 引数等を保存しておく必要があるので、それをすると、λと変わらないと思う。 >>722 無理しているので、return a >>= k = k a が成り立たなくなってたりしているので注意。 ついでに、前に作ったモナドをどうぞ。 面倒を少し減らす程度のものですが。 --- module Main where --type ReadS a = String -> [(a,String)] newtype ReadR v = ReadR { runr :: ReadS v} instance Monad ReadR where ReadR r >>= fr = ReadR (\str -> [ret| (v,str') <- r str, ret <- fr v `runr` str']) return v = ReadR (\str -> [(v, str)]) rread :: (Read a) => ReadR a rread = ReadR reads rlex :: ReadR String rlex = ReadR lex test :: String -> (Int,String) test str = head test' where test' = do rread `runr` str --- Main> test "125 " (125," ")
733 名前:デフォルトの名無しさん mailto:sage [03/07/21 01:46] Randomを使ったコードを少し書いて見ました。 毎回の let (r2, g2) = random g1 in … 数字は使うたびに増やす…が面倒だったので、 モナドにすれば好きな時に r2 <- nextRandom とか書けるのかなあ、とか思ったり。 (既にあるのかもしれませんが) >>732 うう、ありがとうございます。しかし、私のレベルでは何をやっているのかと用途の両方がわかりません…。
734 名前:デフォルトの名無しさん mailto:sage [03/07/21 01:52] >>732 |無理しているので、return a >>= k = k a が成り立たなくなってたりしているので注意。 モナドの法則を満たさなくてモナドといえるの?
735 名前:デフォルトの名無しさん mailto:sage [03/07/21 02:33] module RandomProgression where import Random data RandomProgression r a = RP (r -> (a, r)) nextRandom :: (RandomGen r, Random a) => RandomProgression r a nextRandom = RP (\r -> random r) instance Monad RandomProgression r a where --(>>=) :: RandomProgression r a -> (a -> RandomProgression r b) -> RandomProgression r b RP x >>= f = RP (\r -> let (a, r') = x r in let RP b = f a in b r') --return :: a -> RandomProgression r a return value = RP (\r -> (value, r)) 書いてみました…instanceでエラーが出ます…わかりません… ↓こんな風に使えたらいいなと思ってる let (answer, g) = (do a <- nextRandom; return (a `mod` 10)) (mkStdGen 100)
736 名前:デフォルトの名無しさん mailto:sage [03/07/21 02:45] 括弧が要るんですね… instance Monad (RandomProgression r) where 実行用に eval :: (RandomGen r) => RandomProgression r a -> r -> (a, r) eval (RP e) r = e r 書き足して RandomProgression> eval((do x <- nextRandom; return (x `mod` 10)) :: RandomProgression StdGen Int) (mkStdGen 10) (7,432453652 1655838864) 動いたー! どうも、スレ汚しごめんなさい
737 名前:デフォルトの名無しさん mailto:sage [03/07/21 02:59] >>733-736 そんなことをする必要はない。 randoms (mkStdGen 1) ::[Int] のようにして無限乱数列が作れるのだから。 Make use of the power of lazy evaluation ! # あとはそれにmapでもなんでもして加工すればいい。
738 名前:デフォルトの名無しさん mailto:sage [03/07/21 15:25] ハクションと似てなくもないような
739 名前:デフォルトの名無しさん mailto:sage [03/07/21 19:05] >>737 なるほど!遅延評価を忘れてました。 しかしそれでも2個の乱数を取ってきたい時は、let (r1:r2:rs') = rs (以降はrs'から取る) みたく 乱数列を意識して渡していかないといけないような。いや、ずっと書きやすいではありますが。
740 名前:デフォルトの名無しさん mailto:sage=732 [03/07/21 20:22] >>734 知らん。気になるのなら、たとえば、こうすればちゃんとモナドになる。 module Main where instance (Num a) => Monad ((,) a) where (>>=) (sub, main) f = (sub+sub', main') where (sub', main') = f main return main = (0, main) >>733 まずちょっと修正...スマソ。 import Monad -- 追加 instance Monad ReadR where ReadR r >>= fr = ReadR (\str -> [ret| (v,str') <- r str, ret <- fr v `runr` str']) return v = ReadR (\str -> [(v, str)]) fail s = mzero -- 以下追加 instance MonadPlus ReadR where mzero = ReadR (\s -> []) mplus (ReadR f) (ReadR g) = ReadR (\s -> f s ++ g s) 用途としては、下のようなコード(やさしいHaskell 8.3節からコピペ)のtuvwxのような変数を書かなくてもよくすること。それだけです。 >readsTree :: (Read a) => ReadS (Tree a) >readsTree s = [(Branch l r, x) | ("<", t) <- lex s, > (l, u) <- readsTree t, > ("|", v) <- lex u, > (r, w) <- readsTree v, > (">", x) <- lex w] > ++ > [(Leaf x, t) | (x, t) <- reads s]
741 名前:デフォルトの名無しさん mailto:sage=740 [03/07/21 20:26] 上のコードのReadR版 >rreadTree :: (Read a) => ReadR (Tree a) >readsTree s = rreadTree `runr` s >rreadTree = do "[" <- rlex > l <- rreadTree > "|" <- rlex > r <- rreadTree > "]" <- rlex > return $ Branch l r > `mplus` > do x <- rread > return $ Leaf x
742 名前:デフォルトの名無しさん mailto:sage [03/07/21 20:38] >>739 なんかまだ手続き型の頭のような気がする:) 関数型だったら結局繰り返しは再帰で書くんだから、 結局こんな感じになると思う。 f 0 result rs = result f n result (r1:r2:rs) = f (n - 1) (g r1 r2 result) rs # f 10 [] randomlist のように使う。 # g で欲しいものを計算。
743 名前:デフォルトの名無しさん mailto:sage [03/07/21 20:39] う、結局が二つも。
744 名前:デフォルトの名無しさん mailto:sage [03/07/22 01:26] >> 740 Num a が気になる
745 名前:デフォルトの名無しさん mailto:sage [03/07/23 22:09] GHCって実はfromIntが無かったりします…? Variable not in scopeと言われるのですが
746 名前:デフォルトの名無しさん mailto:sage=740 [03/07/24 01:42] >744 気にするな。
747 名前:デフォルトの名無しさん [03/07/24 10:52] >>745 fromInteger じゃだめなの? 今のHaskell 98 の Prelude には fromInt は無いのでは。
748 名前:デフォルトの名無しさん mailto:sage [03/07/24 20:52] >>747 いえ、Intからの変換にfromInteger (toInteger n)と書くのが冗長な気がしただけです。
749 名前:デフォルトの名無しさん [03/07/29 00:04] >>748 Enum クラスのメソッドが使えるのでわ。 toEnum :: Int -> a fromEnum :: a -> Int
750 名前:デフォルトの名無しさん mailto:sage [03/08/01 10:11] >>749 FloatやDouble…のつもりでしたが、それらもtoEnumでいけるのですね。 ありがとうございます。そして遅レスごめんなさい
751 名前:デフォルトの名無しさん [03/08/02 01:34] ニセ手続き型?の基本的なもなどはなんとなくわかった(というか「同じやん」ということで) けど、それ以外のモナドがワカンネ。 ライブラリ読んでみたりしたけど激むず。 モナド難しいですね。 ニセ手続き型を理解したあとは、どうしたらよいのでしょうか
752 名前:デフォルトの名無しさん mailto:sage [03/08/02 19:05] GHCのText.Regexで matchRegex (mkRegex "abc") "xabcx" => Just [] matchRegexAll (mkRegex "abc") "xabcx" => Just ("x","abc","x",[]) これってバグ?
753 名前:デフォルトの名無しさん mailto:sage [03/08/02 19:42] あ、二つ目は書き間違い。 matchRegexAll (mkRegex "abc") "xabcx" => Just ("","abc","x",[])
754 名前:デフォルトの名無しさん mailto:sage [03/08/02 19:54] モナドの問題点とかは特に上がってないのですか? 実行効率周りとか。
755 名前:デフォルトの名無しさん mailto:sage [03/08/08 01:02] GHC 6.0.1 Released
756 名前:デフォルトの名無しさん mailto:sage [03/08/08 07:07] >>755 いただきました
757 名前:デフォルトの名無しさん mailto:sage [03/08/11 13:30] 素朴な疑問なのですが Haskell の言語使用はかなり頻繁に変わるものなのでしょうか? 2000年あたりに出版された本で勉強しようかと思っているのですが、それいらい大きく変わったとか、 近いうちに大きく変わるとか、ありますか?
758 名前:デフォルトの名無しさん mailto:sage [03/08/12 00:36] 基本はHaskell98から変わってないんじゃないだろうか。 処理系によっては独自拡張があることも。
759 名前:デフォルトの名無しさん mailto:sage [03/08/12 21:05] >>758 サンクスコ。 言語仕様は大きく変わってないから、そのころの本で勉強しても問題ないということですね。 がんばって勉強してみます。 (関数型言語は使ったことがないから、なじめるかわからないけど)
760 名前:デフォルトの名無しさん mailto:sage [03/08/13 20:49] 確かに言語仕様はほとんど変わっていないが、 ライブラリがかなり違うような気がする。 ライブラリは階層化ライブラリ(Data.Listとか) で決まりでいいのだろうか。 標準ライブラリ以外になると混沌としか言い様がない
761 名前:デフォルトの名無しさん mailto:sage [03/08/13 21:45] Hugsもライブラリを2通り持ってるね。
762 名前:デフォルトの名無しさん mailto:sage [03/08/13 22:52] www.haskell.org/onlinelibrary/ ここにあるのが標準ライブラリーで、足りない部分は、 www.haskell.org/libraries/ から探すとか、自作するということですか? www.haskell.org/ghc/docs/latest/html/libraries.html で、これが HUGS についてくるライブラリー群?
763 名前:デフォルトの名無しさん mailto:sage [03/08/14 00:53] Hugsのライブラリについて書いてあるよ。 cvs.haskell.org/Hugs/pages/hugsman/libs.html GHCは5.04.1=>6.0でライブラリ関係が少し変わっているような気がする。
764 名前:デフォルトの名無しさん mailto:sage [03/08/15 02:04] 前スレは約一年に使い切ったのに、part2 に移行して少し停滞してます。
765 名前:デフォルトの名無しさん mailto:sage [03/08/15 02:29] www.cse.ogi.edu/ 〜hook/cse532f99/haskell1.htm ↑赤黒木の実装に感動。 だれか、コンパクトなdelete実装しれ!
766 名前:山崎 渉 mailto:(^^) [03/08/15 16:09] (⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
767 名前:デフォルトの名無しさん [03/08/19 11:49] 6.0.1入れたらwxHaskellが使えなくなっちまった
768 名前:デフォルトの名無しさん mailto:age [03/08/19 15:54] win de GUI no hito mada-?