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


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

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



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/

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は傲慢だけど、そうじゃないよね?

612 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 07:36:36.25 ]
オーバーロードは必要でオーバーライドは不要だと思ってるところが傲慢だ

613 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 09:25:13.67 ]
>>580
ここは読んだか?
www4.atwiki.jp/fsharpmaster/m/pages/13.html

614 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 09:28:48.05 ]
>>550
Johan TibellのHaskell Performance Patterns talkのスライドも
このリストに追加の資料になりそう。

615 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 11:31:01.99 ]
>>604
全く同じとまでは言わないけど、
Haskellのtype ≒ Javaのclass
と考えたときに、
Javaのinterfaceがclassにまたがって横断的に制約を作れるというところが、
Haskellの型クラスがデータ型を横断して共通の「クラス」を作れるところ
と似てるって言ってるんじゃないの。
とりあえず最初の入り口から何でも違う違う言ってたら、誰もHaskell始められないよ。




616 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 11:43:00.28 ]
>>615
このスレを見て面白そうなので僕は今日から始めました。

617 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 12:42:29.71 ]
>>615
ということは、それはコンパイル時の解釈の問題ですよね

>>593
> オブジェクト指向の考え方は捨てるべき
と言っており、これはアプリケーションを作る指針となる考え方において、
抽象クラスとは違うことを言っているように思えます

もしそうなら、それに対する反論としての >>593 は的外れだと思います

>>583 も、わかればわかるけど、モナドはモナド則そのものは解りにくいと言ってることから、
入門レベル(最初の入り口)は通り過ぎているものと思われます。


> とりあえず最初の入り口から何でも違う違う言ってたら、誰もHaskell始められないよ。

それはそうですが、それとは別問題として、話が噛み合っていないような気がします

618 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/02/17(金) 13:03:38.71 ]
俺もあんまり「××のようなもの」っていう解釈はしない方がいいと思ってる。
部分的に機能がかぶるだけで類似性を見出していたのではそれに引き摺られて根本的なパラダイムの理解に進み難い。

619 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 13:25:22.45 ]
type classってオーバーロードと型推論を両立するための妥協だから
パラダイムみたいな高尚な概念じゃないよ

620 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 13:34:40.12 ]
そんなこと言ったらOOPにだってパラダイムなんて高尚なもん
一つも無ぇっつーの

621 名前:615 mailto:sage [2012/02/17(金) 14:08:40.22 ]
>>617
話の流れ見てなかった。すまんかった。
だからケンカしないで。

622 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:17:39.16 ]
>>617
横レスだけど、

・オブジェクト指向のクラスもHaskellの型クラスも
 「抽象データ型」の実現という意味では似ている(>>615)
・オブジェクト指向の「インヘリタンス」とHaskellの「アドホック型多相」とは
 型システム理論という意味では全く違う(>>593)

ということじゃないのかな?
各用語の意味は、自分で調べてね

623 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:31:40.54 ]
>>622
OOPの「継承」は部分型多相では?

624 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:34:40.69 ]
>>623
オーバーライトや疑似変数selfなんてのは、部分型多相には存在しない概念/理論

625 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:46:11.83 ]
>>623
なるほど。型理論勉強します。



626 名前:625 mailto:sage [2012/02/17(金) 14:46:38.91 ]
>>624 だった

627 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 14:58:14.86 ]
>>619
型クラスにはアドホック型多相という理論的基盤があるから、
それはいわゆる「高尚」と表現してもかまわないんじゃまいかと思う

>>620
OOPの継承というのは直感的かつ曖昧なもので、その足場は非常に不安定
だからオブジェクト指向について10人に尋ねれば、10人それぞれが異なった解釈を返す
そんな代物を「高尚」とは、とても呼べないんじゃまいかと思う

628 名前:627 mailto:sage [2012/02/17(金) 15:10:40.81 ]
訂正

X: OOPの継承というのは....
O: OOPというのは....

629 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:18:03.49 ]
>>624
概念/理論は存在したり存在しなかったりするんだな・・・
それなら概念/理論を教えるよりも実装を教える方が良い

630 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:22:36.71 ]
例えばC++で言うところのオブジェクト指向とは
・情報隠蔽
・継承
・ポリモーフィズム
でした

631 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:26:42.34 ]
オーバーロードをアドホック多相と言いかえると何か凄そうに見えるテクニックはテストに出ます

632 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 15:39:17.02 ]
>>629
>概念/理論は存在したり存在しなかったりするんだな・・・

え、オーバーライトや継承の概念を含む、いわゆる「継承の型システム」に関する理論は、
いくつか存在しているよ
足りないのは動的なメソッド結合(ダックタイピング)や動的な型付け(メタプログラミング)の理論

そんな完成した静的型付けな型システムの一つを実装したのがObjective-Caml
ただし、(Objective-CがOOとCのハイブリッド言語であるように)
部分型多相と継承は理論的に全く違うから、両者のハイブリッドになっている
結果として、残念ながら「関数型パラダイムにおけるオブジェクト指向」という理想には程遠い

633 名前:632 mailto:sage [2012/02/17(金) 15:41:17.07 ]
また訂正

X: オーバーライトや継承の概念を含む、....
X: オーバーライトや疑似変数selfの概念を含む、....

634 名前:はちみつ餃子 ◆8X2XSCHEME mailto:sage [2012/02/17(金) 15:48:26.21 ]
>>633
また訂正ですね!!

635 名前:632 mailto:sage [2012/02/17(金) 16:17:42.90 ]
>>634
...orz

すぐに分かってくれたようだから、あえて訂正しないw

>>631
MLやHaskellでは、JavaやC++のようなNullPointerExceptionやBusErrorは発生しない
型に関するミスは、コンパイル時にすべて検出できる
それが、理論的背景のある型システムの「凄さ」だと言える

次のテストに出すかもしれないから、よく復讐しておくように



636 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:40:57.39 ]
別に凄くない
むしろ、すべてに責任をもつことはできないから責任を限定する理論が必要になる
型に関するミス以外は管轄外だし
プログラマーが勝手に Nothing とか [] を使うのは自己責任

637 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:47:11.46 ]
言語の中でNullを扱わなくなっただけで、Nullみたいな値の濫用の余地は残るわけですよね。
昔のCOBOLはNULLが扱えなくて0000や9999などの値で成功失敗とか表現していましたし、そういうシステムはかなり多いと聞いています。
つまり、NULL無いんなら0000や9999でいいやと思うような人には型システムなんて意味ないんじゃないでしょうか?


638 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 16:56:36.58 ]
>>611
他パラダイムや他言語を矮小化する一方で、
「無秩序でいい加減な」という意味のアドホック多相を
あたかも高尚なものであるかのように
誇張しているだけだから、傲慢じゃなくて
滑稽だね。

639 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:06:52.05 ]
ad hoc
 adv., adj. (特に)このために[の], 特別に[の], この場限りで[の], その場限りで[の].
                        研究社 新英和大辞典 第6版

640 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:20:15.57 ]
www.youtube.com/watch?v=z5rRZdiu1UE

641 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 17:21:05.17 ]
カズヤマモトサンかっけー

642 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:09:29.51 ]
この流れで質問させてください
型クラスってのは代数的構造のことではないんでしょうか?

643 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:48:32.83 ]
>>642
そんなようなものだけどもうちょっと一般的
C aというインスタンスのメソッドの戻り値の型はa以外になり得る
OrdとかShowとか

644 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 18:57:33.81 ]
>>635
ヌルポは値に起因するバグで、型システムによる安全性の保証外なのはML系でも同じだよ。
MaybeはまんまC#のnullable<T>だし。
Haskellはパターンマッチでパターンを網羅してないとちゃんと警告出してくれたり、
Maybeモナドみたいな明示的にチェックを書かなくても済む仕組みその他諸々のおかげでバグりにくいって話で、
コンパイルで検出出来てるわけじゃないし、発生しないわけでもないよ。

645 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:12:32.81 ]
>>642
型クラスもデータ型もメモリ上のビットも代数的構造



646 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:24:43.41 ]
NullPointerExceptionはバグなの?

647 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:29:54.49 ]
>>644
Maybeはぬるぽがっされないような、、、

648 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 19:43:26.86 ]
>>645
そういう文脈で代数的構造と言った場合の「代数的」とはどういうものですか?

649 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 20:02:36.22 ]
>>648
代入可能なこと
定数以外は代数的構造

650 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 20:55:05.10 ]
>>647
トリビアルな例だけど、常にJustな事が期待されてる変数alwaysJust :: Maybe aがあったとして、
1)
case alwaysJust of --これは警告がでるけど
 Just x -> x

2)
let (Just x) = alwaysJust in x -- こんなドタコなコードは書かないけど…

3)
-- fooの使用者からは定義かドキュメントを見ない限り、例外が上がってくる可能性がある事は知りようがない
foo :: a -> a
foo v = fromJust $ do -- fromJustってどういうケースで使うんだろか…。
 x <- alwaysJust
 v' <- Just v
 ...
 return v'

もし、alwaysJustがバグっててNothingだったら、上の例は全部例外あげてくる。
特に3番目みたいな外からは一見安全に見える型の関数でも、ガッされない絶対の保証があるわけでも、検出できるわけでもないよ。
(1番目以外は警告すらでないし)

Maybeからそれると、Preludeの関数でもListのheadとか(!!)とか、Enumのsucc、predとかreadやArrayとか、
プログラマがちゃんと保証しなきゃいけない関数も結構あるし。

651 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:29:13.08 ]
Maybeからそれると、Intも危険だよね
オーバーフローして意図しない挙動をする危険性があるから
プログラマがちゃんと保証(ry

652 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:31:32.72 ]
RWHを買ってきました
あしたRWHを一日かけて読み切ります
何か注意点とかありますか

653 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:35:16.99 ]
急いで読まない

654 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 21:59:05.59 ]
コードを写経して動かなくても文句言わない

655 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:12:05.67 ]
なんか、ものすんごい勢いでレスついてるね。
みんな暇か?



656 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:15:37.70 ]
詰まったり解らなかったり動かなかったら本家(>>5の上)のコメントなんかも参照
一日で読み切れなくても泣かない投げない

657 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:19:09.47 ]
>>652
最初からまじめに読んでいくと冗長度が高くて飽きる。飛ばして途中から見ると何言ってるのか分からない。
昆虫本には良くあることです

658 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:28:48.44 ]
今 GHC 7.4.1 の環境です

デュアルコアのCPUを使ってて、GHC の RTS オプション -N2 で、
2スレッドが平行して動くことは確認できました

今 Intel のハイパースレッディング(HT)機能を持つ CPU に変更する検討をしていますが、
GHC のマルチコア機能はHTに対応するのでしょうか

コア数を返す関数がHTを考慮した論理コア数を返す事はリリースノートで確認しましたが、
実際に平行して動くスレッドの数として正しく機能するかという質問です

つまり、例えばコア数2のHT機能を持つCPUで -N4 を指定すれば、
ちゃんと4つのスレッドが平行して動くのでしょうか

659 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 22:30:08.58 ]
RWH一日は無理だろ

660 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:04:02.43 ]
>>658
>GHC のマルチコア機能はHTに対応するのでしょうか => Yes
>ちゃんと4つのスレッドが平行して動くのでしょうか => No
ちゃんとの意味にもよると思いますが
詳しくはwikipediaを


661 名前:デフォルトの名無しさん mailto:sage [2012/02/17(金) 23:25:23.88 ]
>>660
> ちゃんとの意味にもよると思いますが

例えば RTSオプションで -s を指定して実行して得られる情報において、
コア数2のCPUよりコア数2HTのCPUの方が、
よりコア数4のCPUに能力的に近いと分かる結果が計測値として出るか、
という意味です

662 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 00:28:18.38 ]
>>661
だったらあらためてNoです
HTではほとんど性能向上しません(だったような


663 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 09:15:59.39 ]
HTって遊んでるユニットを怠けさせないで酷使させる機能に過ぎないから
遊んでるユニットが登場しないサイクルでは機能しない
なんちゃって2倍でしょ

664 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 09:36:00.16 ]
カズ山本
 ttp://redstar-s.blogzine.jp/redstar/images/softbank_hawks_store-img444x600-1121339119kazu_yamamoto.jpg

665 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 18:34:36.09 ]
RWHどうなった?



666 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:03:40.00 ]
>>662
コア数2のノーパソから手頃かに価格のコア数2HTのノーパソに買い換えようかと思ってましたが、
Haskell 絡みではあまり幸せになれなさそうですね
コア数4くらいのがもう少し安くなるまで待つことにしました

>>663
なるほど、妙に納得しました

667 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:09:24.78 ]
正確に2倍になるわけじゃないが、1.7倍ぐらいは楽勝でいくだろw

668 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 19:38:41.19 ]
1.7倍どころかインテル自称で20%増し程度じゃないのか
その上、場合によっては遅くなったり、不具合出るオマケ付きっつー…
まぁHTとHaskellは殆ど関係ないんじゃないか?

669 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 21:01:38.89 ]
HTで速くならないのはコンパイラがそういう最適化をしてないからだろ
1ヶ月ぐらいCPUぶん回す数値計算ならHT向けの最適化をやる意味はあるだろうが、
特に用途も決まってないHaskellが特定のCPU命令セットの最適化して意味があるとは思えないが

670 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 21:15:03.37 ]
インテルの発表で
sandybridgeで8割に上がったような話があったような気がする。
たしか、HT:ONの場合、
マルチコア全部使い切るようなプログラムのスループットは1->0.8x2x(smp8コア/4コアの効率比が1として)=1.6ぐらい。
ただし、シングルプロセスの実行部分は、
邪魔されて0.8ぐらいまで落ちる場合があるが、
OSのプロセス管理で、なるべく占有できるところに配置される。


671 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 21:16:07.06 ]
いままでは、7割、7.5割と上がってきてたのが8割。

672 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 21:19:56.22 ]
コンパイラがいくらがんばっても演算密度が十分濃ければSMTで性能は上がらないでしょ

673 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 21:21:34.04 ]
>>669
HTの効果を利用するには専用の命令セットを叩く必要があるのでしょうか

今までずっと、特に意識すること無く自動的に各HTに処理を割り振ってくれると思ってました

repa を使ってるとダイレクトにマルチコアの恩恵を受けるので、
HTで更に2倍になるならいいなぁと思ってたんですが・・・

674 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 21:25:55.33 ]
ようするに、HTで4PC/8VCなら、
OFF:1-4が、
ON:0.7-5.6、0.75-6.0、0.8-6.4
とP4のころに比べて進化してきてるような話だったと思う。

675 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:14:43.49 ]
>>673
すまん。HT用のインストラクションじゃなくて、HT用に処理をマルチスレッドに分解したり、
スレッドに適したキャッシュ配置にするような特定のCPUアーキテクチャ実行モデルを仮定した最適化という意味だった
ICCとかがそういう最適化を前面に出してるが、実際にはそれほど単純には速くならない



676 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 22:50:19.80 ]
>>675
なるほど、でも

> HT用に処理をマルチスレッドに分解したり

この部分は、元々シングルスレッドだったものを、
コンパイラが「勝手に」上手くマルチにしてくれることは無い
という意味ですよね

もともとマルチスレッドで Haskell のソースコードを作っていたら、
実行時に勝手に HT に振り分けてくれないのですか?

そんな単純ではない?

677 名前:デフォルトの名無しさん mailto:sage [2012/02/18(土) 23:00:34.29 ]
文字列で日本語使えないのでしょうか?






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

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

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