1 名前:デフォルトの名無しさん mailto:sage [2012/01/02(月) 22:19:28.26 ] haskell.org ttp://www.haskell.org/ 日本語サイト ttp://www.sampou.org/cgi-bin/haskell.cgi ttp://www.shido.info/hs/ 過去ログ 関数型プログラミング言語Haskell Part1 ttp://pc.2ch.net/tech/kako/996/996131288.html Part2 ttp://pc2.2ch.net/test/read.cgi/tech/1013846140/ Part3 ttp://pc8.2ch.net/test/read.cgi/tech/1076418993/ Part4 ttp://pc8.2ch.net/test/read.cgi/tech/1140717775/ Part5 ttp://pc8.2ch.net/test/read.cgi/tech/1149263630/ Part6 ttp://pc11.2ch.net/test/read.cgi/tech/1162902266/ Part7 ttp://pc11.2ch.net/test/read.cgi/tech/1174211797/ Part8 ttp://pc11.2ch.net/test/read.cgi/tech/1193743693/ Part9 ttp://pc11.2ch.net/test/read.cgi/tech/1211010089/ Part10 ttp://pc12.2ch.net/test/read.cgi/tech/1231861873/ Part11 ttp://pc12.2ch.net/test/read.cgi/tech/1252382593/ Part12 ttp://hibari.2ch.net/test/read.cgi/tech/1272536128/ Part13 ttp://hibari.2ch.net/test/read.cgi/tech/1286706874/ Part14 ttp://hibari.2ch.net/test/read.cgi/tech/1299385928/ Part15 ttp://hibari.2ch.net/test/read.cgi/tech/1310199414/ Part16 ttp://toro.2ch.net/test/read.cgi/tech/1317958045/
511 名前:デフォルトの名無しさん [2012/02/03(金) 23:22:13.48 ] アロー演算子ならまかせろ!
512 名前:餃子チョコレート ◆8X2XSCHEME mailto:sage [2012/02/03(金) 23:25:47.33 ] >>510 こういうのはどう? d.hatena.ne.jp/MaD/20070816#1187319817
513 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 00:05:18.95 ] >>506 Arrowの心 d.hatena.ne.jp/MaD/20070816 >Monadと同様にArrowにもArrow則という規則があります。 > 1. (a >>> b) >>> c = a >>> (b >>> c) > 2. arr (g.f) = arr f >>> arr g > 3. arr id >>> a = a = a >>> arr id > 4. first a >>> arr pi1 = arr pi1 >>> a > 5. first a >>> arr (id X f) = arr (id X f) >>> first a > 6. first a >>> arr alpha = arr alpha >>> first (first a) > 7. first (arr f) = arr (f X id) > 8. first (a >>> b) = first a >>> first b
514 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 13:28:24.89 ] >>512 読みました\(^O^)/
515 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 17:10:59.19 ] 要約すると「Arrow はパズル」。
516 名前:デフォルトの名無しさん mailto:sage [2012/02/04(土) 17:41:35.25 ] > とりあえずfirstについてのルール4,5,6,7,8は無視します。 ワロタ
517 名前:デフォルトの名無しさん [2012/02/05(日) 10:47:39.79 ] ghciで階乗の関数factを定義しようとしてるのですが、以下のようにすると Prelude> let fact 0 = 1 Prelude> let fact n = n * fact (n - 1) Prelude> 先週まではうまく行ってたのに、急になぜかうまくいかなくなりました。 Prelude> fact 10 ^CInterrupted. Prelude> fact 10とかやると永遠に返って来ません。 どうもlet fact 0 = 1のあとにlet fact n = n * fact(n-1)とやるとfactの定義が上書きされてる みたいなのですが、何か間違ってるでしょうか?
518 名前:デフォルトの名無しさん mailto:sage [2012/02/05(日) 12:44:07.59 ] >>517 ghci上ではこうやるといいです let fact 0 = 1; fact n = n * fact (n-1) 先週か今週にかけて ghc のバージョンアップをしたのでは? ghciの仕様が変わったかどうか詳細は知らないので、原因は違うかもですが
519 名前:デフォルトの名無しさん [2012/02/05(日) 13:16:48.53 ] >>518 ありがとうございました。動きました。 先週までは Prelude> let func1 'a' = "aaa" Prelude> let func1 'b' = "bbb" こう書けてたと思うんですが、自信がなくなってきました。上のも、こう書けば動きました。 Prelude> let func1 'a'="aaa"; func1 'b'="bbb" ありがとうございました。
520 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 18:39:55.29 ] HaskellはHTMLに<?haskel ?>のように 埋め込めますか?
521 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 18:43:44.18 ] >>520 埋め込んだらええやん それを解釈して正式な HTML や JavaScript なんかに変換する サーバーアプリに通せばええよ
522 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 18:51:15.58 ] なんちゅう名前のサーバアプリがええんですか?
523 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:16:46.10 ] >>522 そんなん自分で作るんちゃうんかいな 探したって無駄やさかい
524 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 19:32:44.58 ] >>523 ホンマですか? えらい難儀な話ですけど、しゃーないですね。 スレ汚しすんませんでした。
525 名前:デフォルトの名無しさん mailto:sage [2012/02/06(月) 20:25:45.57 ] >>523 てげよだきー
526 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:07:30.44 ] んじちゃーぴら
527 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 07:48:14.32 ] a_1 = a_2 = 1, a_n+2 = a_n+1 + a_n a_9 = a_8 + a_7 = (a_7 + a_6) + a_7 でa_7をグラフ簡約してくれるようにするにはどうしますか? まさか a_7 を2度計算するなんて事になったら 土砂降りの中、滑って転んだ野良犬のような惨めに打ちのめされた気分になります = (a_7 + a_6) + [a_6 + a_5]_7 = (a_7 + [a_5 + a_4]_6) + [a_6 + a_5]_7 = (a_7 + [a_5 + a_4]_6) + [a_6 + [a_4 + a_3]_5]_7 = (a_7 + [a_5 + [a_3 + a_2]_4]_6) + [a_6 + [a_4 + a_3]_5]_7 = (a_7 + [a_5 + [a_3 + a_2]_4]_6) + [a_6 + [a_4 + [a_2 + a_1]_3]_5]_7 = (a_7 + [a_5 + [2 + 1]_4]_6) + [a_6 + [a_4 + [2]_3]_5]_7 = (a_7 + [a_5 + [3]_4]_6) + [a_6 + [3 + [2]_3]_5]_7 = (a_7 + [5 + [3]_4]_6) + [a_6 + [5]_5]_7 = (a_7 + [8]_6) + [8 + [5]_5]_7 = (13 + [8]_6) + [13]_7 = 34 ってイメージで
528 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 18:48:44.70 ] >>527 何らかの形で共有を明示するしかない たとえば fib = 1 : 1 : zipWith (+) fib (tail fib)
529 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 21:57:38.51 ] >>528 フィボナッチ以外でも適用できる汎用的なノウハウが欲しいです 寧ろ数列計算よりシミュレーション的な 将棋の次の一手の探索みたいな
530 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:02:40.24 ] ・処理するには新しい処理が芋蔓式に出現する ・それらの多くが頻繁に共通にあらわれる・共通処理は省かないと総処理は天文学的オーダーで膨れ上がる こういうケースの汎用指針が欲しいです
531 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:07:23.01 ] DPを自動でやりたいように見えた
532 名前:デフォルトの名無しさん mailto:sage [2012/02/07(火) 22:09:06.55 ] >>530 メモ化ね 汎用指針は、計算済みの値を捨てないで保存しておくこと IOとかStateモナド上で状態にして引き回してもいいし、 >>528 みたいに、全部の値を含む(場合によっては無限の)データ構造を定義してもいい
533 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 07:20:52.45 ] >>531 「芋蔓式に出現する」の意味がよく分からないけど、新しい式を書き加えてなんどもコーディングするっていうことなら、トップレベルに定義していけばよいんじゃないの? コーディングを繰り返さないなら、>>532 のいうようにメモ化を求めているんだろうけど、将棋の次の一手とかメモ化したら空間オーダが爆発しそうだな。 それで解決できるなら、将棋の決して負けない手順がすでに明らかになっているだろうし。 そのレベルのことをどうしてもやりたいなら金に糸目を付けず並列クラスタを作るしかないんじゃないの?
534 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 07:50:15.51 ] 「Stringはオワコン。これからはText」って言われてるのを見て Data.Text を使おうとしたけれど、なんで index が O(n) なの? 中身はただの配列だと思ってたのに。 hackage.haskell.org/packages/archive/text/0.11.1.13/doc/html/Data-Text.html
535 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 09:20:34.12 ] データはコピーしないで、リストでデータの在処を持ってるんでしょ。 lastがO(1)だからケツも押させてるんだと思う。
536 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 11:41:41.19 ] >>535 ありがとう。 ソースをざっと見てみたら、配列・オフセット・長さの組を使っているようだっ た。単なる配列じゃないのは、部分文字列(tail とかで)でコピーしなくていい ようにするためらしい。 で、index が遅いのは、Unicode のサロゲートがらみみたい。index s n の n が文字数なので、サロゲートがあると配列のインデックスとずれてしまうせい で、先頭か最後から順番に数えてるようだった。length が O(n) なのも、たぶ んそれが理由。 ちょろっと眺めただけなので、まちがってるかも。 とりあえず String より遅くはなさそうなので、もうちょっと試してみます。
537 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 12:05:29.10 ] とにかくでかいデータ用だぜ。
538 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 12:10:04.92 ] 時代はUTF32
539 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 12:35:16.38 ] UTF48
540 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 13:42:13.86 ] >>515 じゃあパズルをとこうぜ。 www.amazon.co.jp/gp/product/0486281523/ www.amazon.co.jp/gp/product/0486653552/
541 名前:デフォルトの名無しさん mailto:sage [2012/02/08(水) 18:37:49.70 ] >>539 warota
542 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 21:18:58.47 ] QuickCheck って Monad もテストできるのずっと気づかなかった
543 名前:デフォルトの名無しさん mailto:sage [2012/02/10(金) 23:30:34.09 ] 本屋に行ったけど、RWHしかなかった 人気ないのかな…
544 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 02:30:53.27 ] >>543 人気の定義による。 ・プログラマー人口内のシェア? →世間のビジネスの9割以上は単純な事務作業なので、 そういう処理を書ける言語はHaskell以外に沢山ある。 ちなみに、書店はシェア重視。 ・ある問題領域で解決したい課題を持つ者にとって、ロジックを実装しやすいか? →自分と同様の問題領域の人を探したほうがいい。
545 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 08:27:54.18 ] >>543 RWHの和訳って前半部分がいまいちわかりにくいのが残念。 また、あのままでGHC7以後で動かそうとすると、ちょっと面倒なところ が出てる。だから、改訂版に期待したいんだがな。
546 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 08:30:21.86 ] ・Haskell高速化テクニック なんて本がでないかな?
547 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 08:31:18.34 ] 言いだしっぺの法則
548 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 08:40:30.32 ] オライリーが投資を回収できてれば次も期待できると思うが、どうなんだかね
549 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 09:05:15.98 ] yesod本がでるくらいだから、RWHは収益が上がってるんじゃないかと? >>547 残念だけど、教えて欲しい立場。人にチューニングを語れるほどじゃないし。
550 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 09:23:04.02 ] Haskell wikiのPerformanceの項とかmkothaさんの記事 ghcのドキュメント ghcのプロファイリング機能とかcriterionパッケージ thread scope 最終的には諦めてC++/Asmで書く
551 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 12:12:58.97 ] クリテリオンんて何かワクワクする語感だな アニメでいうとロボものだろう
552 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 12:46:57.36 ] クライテリオンな まぁ別にどっちでもいいことだけど
553 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 13:56:27.61 ] 超聖判規クライテリヲン
554 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 19:24:57.36 ] あ、関節の病気か。
555 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:32:33.40 ] 2日に GHC のバージョンが 7.2.2 から 7.4.1 に上がってたのか ghci 上で data や instance なんかの宣言ができるようになってた これは便利 それはそうと、さっさと実行時に利用コア数を変えられるようにしてほしいものだ
556 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:50:35.15 ] setNumCapabilities 増やせるだけで減らせないみたいだけど
557 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:54:08.17 ] we recommend installing the Haskell Platform instead of GHC. The current Haskell Platform release includes a recent GHC release as well as some other tools (such as cabal), and a larger set of libraries that are known to work together. と書いてるからさ、5月まで待ったほうがいいんじゃない? <7.4.1
558 名前:デフォルトの名無しさん mailto:sage [2012/02/11(土) 23:59:10.81 ] GHCの代わりにHaskell Platformをインストールするのを薦めとくわ。いまの Haskell Platformは最近のGHCを含んでいて、おまけに、他のツール(cabalと かね。)も動くし、よく使われてるライブラリも動くからさ。 だとさ、と意訳しとく。
559 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:00:24.87 ] 既存プロジェクトの移行はライブラリが7.4に対応するまで待つとしても、 普段は最新版使った方が楽しい
560 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:03:51.27 ] Debian系統だとHaskell Platformは単なる仮想パッケージ。
561 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 00:06:35.18 ] >>559 まあ、こなれた人ならそうかもしれない。でも、ここって、いろんな人が いるから、一応書いといた。こなれた人ならトラブルに出会っても、解決 できるだろうし、それが楽しいもんな。 https://groups.google.com/forum/?fromgroups#!forum/haskell-jp でも、しんさんがリリースのメールに注意書きがされているけどね。
562 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 08:01:47.18 ] someRecord{someField = f $ someField someRecord} haskellのレコード構文って何でこんなきもちわるいの フィールド一つ書き換えただけの新しいレコードが欲しいだけなのに
563 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 08:17:24.52 ] ご覧下さい このクランケの症例では ・碌に調べもしない ・煽る事で住人達に答えさせようとしている 点が伺えます これらは怠慢横柄病患者に共通に見られるのです
564 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 08:37:41.32 ] バレたか・・・ いやまあ、自分で調べなかったわけでもないんだけどな ほぼ無理なのは分かってる
565 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 08:40:12.60 ] 本当の地獄はレコードをネストさせてからだ…
566 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 11:11:24.92 ] >>562 どういう書き方ができると良かったの?
567 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 11:22:02.57 ] >>556 増加だけでもできるようになったのか リリースノートを斜め読みしてたから見逃してた
568 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 11:34:11.27 ] ネスとされたレコードの書き換えはdata-accessorとかlenseとか使うと少しは楽になるけど これパフォーマンスどうなるんだろうという不安が出てくる
569 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 11:35:43.98 ] >>568 神に従え
570 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 12:17:15.85 ] >>566 SomeRecordとSomeFieldを二回も書きたくないというか フィールドと同名のgetterを自動生成するような動きを許容したのなら もっとはっちゃけて欲しかったというか テンプレート? テンプレートなぁ・・・
571 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 12:29:24.18 ] TemplateHaskellの有用性はlispが示している
572 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 13:23:20.06 ] >>570 そうは言っても、「汎用的にするなら」 少なくとも 1. 何のデータ型の(値の) 2. 何のフィールドを 3. どう変えるのかを この3つのは何らかの形で指定する必要があると思うが
573 名前:572 mailto:sage [2012/02/12(日) 13:31:17.15 ] >>570 すまん、不満点をちょっと勘違いしてたみたいだ こういうことか someRecord { someField = f $ someField someRecord } {} 前の someRecord の部分が型構築子じゃなく値構築子の場合、 f $ someField someRecord の someRecord 部分は明白だから省略可能 こうなれば、幾分スッキリするな
574 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 15:04:59.49 ] Cabal でライブラリをインストールする時、 オプションで library-profiling を有効にすると、 そのライブラリもプロファイリングの対象にできるよね これって、プロファイリングしないで普通に使う時は 遅くなったりしない?
575 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 15:11:00.59 ] -pを使うとパッケージを二通りコンパイルする ので遅くならない
576 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 15:31:06.20 ] >>575 そっか、安心した ありがと
577 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 19:23:37.68 ] Yampa の par 関数の型について質問です。 (他のパラレル系関数もですが、代表して par を選びました) par :: Functor col => (forall sf. a -> col sf -> col (b, sf)) -> col (SF b c) -> SF a (col c) このルーチン関数の sf という型変数には、SF b c 以外入ることは無いと思うのですが、 単純に a -> col (SF a b) -> col (b, SF a b) という型では何がいけなかったのでしょうか
578 名前:デフォルトの名無しさん mailto:sage [2012/02/12(日) 21:52:55.77 ] Cabal で --enable-documentation とやっていっしょにインストールされるドキュメントに、 ソースコードへのリンクが貼られるようにする方法はないのでしょうか? HackageDB のサイトで見られるドキュメントみたいにしたいです
579 名前:デフォルトの名無しさん mailto:sage [2012/02/13(月) 10:41:10.37 ] >>577 スライドとか論文だと確かOpacity(透過性?)のためとか書いてあって、 俺も正確な意味はよくわからなかったんだけど、 SFを書き換えられるような関数を渡せるのを防止してるんじゃないかな。 route a xs = [(a, identity)] みたいな、コレクションの中身を無視して出所不明のSFにしちゃうような。
580 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 05:11:31.94 ] F#を始めたのだが、モナドで行き詰まっている。 F#の本にはモナドのことが書いていない。 で、ネットでモナドのことを収集すると、ハスケルのがほとんど。 F#での説明もあるが、なんか解りづらい。 で、モナドって何ですか? 関数型プログラミングをやるにはモナドが必須ですか? どなたか教えてください _o_
581 名前:580 mailto:sage [2012/02/16(木) 05:15:46.89 ] ちなみに数学科出身ですが、圏論は知りません。 習った覚えがありませんし、仮に習っていても記憶にないのだから、習っていないのと同じです。
582 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 05:48:37.15 ] モナドはモナド則そのもの。 使い方としてはモナド則を頭に入れてからListモナドとStateモナドを理解すれば後は大体類推が利く。 F#でどうなのかは知らないが、少なくともHaskellで何か書こうと思ったらモナドは必須。 まあ「モナドとは何か」みたいな話は過去スレ遡ればいくらでも出てくるよ。
583 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 08:10:51.47 ] わかればわかるけど、モナドはモナド則そのものってのが禅問答みたいで わかりにくいんだよなぁ。。 Haskellのクラスは、C++でいう抽象クラス見たいなもので、 Haskellのモナドがクラスでどう定義されてるか調べていけば、 意味はわからなくても、使い方はわかると思うよ。 モナドの意味は使っている内に、なんとなくわかるようになる、、、と思う。
584 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 09:19:10.08 ] コンポーネントのようでコンポーネントでない 象のようで象のようでない さてはモナドって南京弾簾だろ!
585 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 09:37:41.55 ] Haskell 最大の失敗はモナドにモナドという名前をつけたことにある。 もっと「もこもこ」みたいな可愛い名前にすれば大流行していた。 とか講演でいってたな。
586 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 09:48:34.02 ] 名前はモナドのまま、バインド演算子を ( ´∀`)みたいなのにすれば良かったのではなかろうか
587 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 09:51:36.68 ] ガンダムで頼む
588 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 10:16:54.54 ] >>585 そのソースはどこよ?w
589 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 13:28:49.11 ] >>588 元ネタはこれのはず。 Wearing the hair shirt: a retrospective on Haskell (2003) Simon Peyton Jones, invited talk at POPL 2003. research.microsoft.com/en-us/um/people/simonpj/papers/haskell-retrospective/ Our biggest mistake Using the scary term "monad" rather than "warm fuzzy thing"
590 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 14:37:03.09 ] 2011年版はビデオで見られる。ちょっと重いけれど。 Escape from the Ivory Tower: The Haskell Journey, from 1990 to 2011 yow.eventer.com/events/1004/talks/1054 簡単だけど32分あたりに "warm fuzzy thing" が出てくる。 各銀行が秘密の Haskell 部隊を雇ってるって話はどこまで本当なんだろう。
591 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:37:45.12 ] >>583 なんでこのなものが要るのか直感的に分からないってこと?
592 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 15:56:24.13 ] >>585 そして処理が一本道だから もこもこで一本道 略して もこみち とかどうよ?
593 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 16:21:24.02 ] >>583 Haskellの型クラスはC++の抽象クラスとは全く違うよ。 オブジェクト指向の考え方は捨てるべき。
594 名前:デフォルトの名無しさん [2012/02/16(木) 18:14:54.42 ] Haskellとオブジェクト指向は根本的に違うから例えて考えるのは実際の処理挙動ぐらいにしたほうが……
595 名前:デフォルトの名無しさん [2012/02/16(木) 18:27:40.48 ] C++にはクラスという機能を用いて現実世界の概念を抽象化することに成功し、直感的な設計・実装が行えるようになった Haskellでは、どのようなパラダイムがこれから出てくるのか 私はそれが楽しみでならないのです って去年死んだおじいちゃんが死ぬ間際に言ってた
596 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 18:49:29.40 ] ぷうぷう!
597 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 19:05:35.61 ] もこもことかモコナとかそういうかわいいのはいらない モサドにしよう
598 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 19:24:01.77 ] >>595 Haskellは遅延評価という機能を用いて現実世界の手順を隠蔽することに成功し、 宣言的な設計・実装が行えるようになりました。 しかしHaskellは関数型言語からは踏み出さないだろうから、新しいパラダイムは Ozのようなマルチパラダイム言語に期待すべきだろうと思えてならないのです。 って友達がさっき言ってた。 コンピュータプログラミングの概念・技法・モデル toro.2ch.net/test/read.cgi/tech/1196257692/
599 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 19:27:51.75 ] Ozはオワlan
600 名前:餃子チョコレート ◆8X2XSCHEME mailto:sage [2012/02/16(木) 20:52:04.09 ] うまいな。 一瞬「終ったランゲージ」と思わせといて実は「終わらん」というダブルミーニングですね!!
601 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 22:13:47.28 ] >>593 そう? 「Learn You a Haskell for Great Good!」には、JavaのInterfaceみたいなのと 考えたほうがいいって書いてるけど。 全く違うっていうならどう考えればいいか説明してほしいな。
602 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 22:27:34.65 ] >>591 最初、(>>=)はただ関数に引数にして渡すだけじゃないか、なんで必要なんだとか思ってた。 他のもなんでこんなのが必要か理解できなかったよ。 変な型修飾付けるせいで、型が違うって怒られるし。 でもそうやって好き勝手書けないようにするのが狙いなんだな。
603 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 22:46:41.67 ] デザインパターンみたいなもの、でいいと思うけどな > モナド
604 名前:デフォルトの名無しさん mailto:sage [2012/02/16(木) 22:56:34.58 ] 私は >>593 ではないのですが、逆に訊きたいです Haskell の型クラスと Java のインターフェイスにおいて、 考え方の共通点とは何でしょうか それは、コンパイル時にどう解釈されるかというレベルの共通点でしょうか それとも、アプリケーションを作る上での指針となるくらいのレベルの共通点でしょうか
605 名前:604 mailto:sage [2012/02/16(木) 22:57:13.58 ] >>604 すいません、>>601 に対しての質問です
606 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 03:06:37.40 ] Haskellのclassはplatformに改名しろ
607 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 04:24:56.80 ] 型を集合だと考えれば型クラスって命名は自然
608 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 04:41:03.84 ] 型(type)のメタ概念として類(class)という名前を採用することは間違っていない ただし、これだけオブジェクト指向の概念が普及しているのが現実なのだから、 それを配慮した命名が望ましかった(かもしれない)ということ これをHaskellの傲慢さと見るか、それとも数学的に正しい命名であると見るかは 判断が分かれるところ
609 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 04:50:13.16 ] オブジェクト指向のclassが類と無関係だと思ってるっつーか、 類をモデルにしているのはtype classだけだとか思ってるところが Haskellerの傲慢さじゃないの?
610 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 05:12:11.76 ] simula(I,67) staff.um.edu.mt/jskl1/talk.html smalltalk(80) web.cecs.pdx.edu/~harry/musings/SmalltalkOverview.html#The%20Smalltalk%20Object%20Model これ参考にCからC++とObjCができたのか。
611 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 06:49:42.48 ] >>609 オブジェクト指向のclassって命名にケチつけてるなら Haskellerは傲慢だけど、そうじゃないよね?