トップページtech
1001コメント358KB

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001デフォルトの名無しさん2009/09/08(火) 13:03:13
haskell.org
http://www.haskell.org/

日本語サイト
http://www.sampou.org/cgi-bin/haskell.cgi
http://www.shido.info/hs/

過去ログ
関数型プログラミング言語Haskell
Part1 http://pc.2ch.net/tech/kako/996/996131288.html
Part2 http://pc2.2ch.net/test/read.cgi/tech/1013846140/
Part3 http://pc8.2ch.net/test/read.cgi/tech/1076418993/
Part4 http://pc8.2ch.net/test/read.cgi/tech/1140717775/
Part5 http://pc8.2ch.net/test/read.cgi/tech/1149263630/
Part6 http://pc11.2ch.net/test/read.cgi/tech/1162902266/
Part7 http://pc11.2ch.net/test/read.cgi/tech/1174211797/
Part8 http://pc11.2ch.net/test/read.cgi/tech/1193743693/
Part9 http://pc11.2ch.net/test/read.cgi/tech/1211010089/
Part10 http://pc12.2ch.net/test/read.cgi/tech/1231861873/
・2chの仕様により、行頭の半角スペースは表示されません。
 コードをインデントしたいときは、代わりに または全角スペースを使うことができます。
0809デフォルトの名無しさん2010/04/10(土) 21:21:40
純粋タイプで元気(まとも)なのはHaskellだけ?
ttp://ja.wikipedia.org/wiki/%E9%96%A2%E6%95%B0%E5%9E%8B%E8%A8%80%E8%AA%9E
0810デフォルトの名無しさん2010/04/10(土) 21:23:38
一般的な人が終了しても、数学的な連中は続けるから。
日常的なことは他の言語を使ってればいい。
0811デフォルトの名無しさん2010/04/10(土) 21:24:36
>>809
Haskellはそもそもその始まりが純粋関数型のフラッグシップ。
それまで乱立していた関数型言語の人をみんなHaskellに結集させたんだから当然。
0812デフォルトの名無しさん2010/04/10(土) 21:31:48
>>810
Haskellやってるのは数学系の人じゃないんだけどね。
コンピュータサイエンスの人。
0813デフォルトの名無しさん2010/04/10(土) 21:32:59
>>811
いや、ここに挙がってる他のは古いか細ってるかみたいだったから、
ほかに新しいのいないのかなと思って。
0814デフォルトの名無しさん2010/04/10(土) 21:44:06
>>813
新しいのを作るのが意味ないからね。少なくとも研究目的では。
純粋かつ非正格評価という制約がある限り、先行するHaskellの劣化コピーにしかならない。
みんなHaskellに移ってしまったから、MirandaもCleanもリソースがない。
だからますますHaskellに集まる。
このポジティブフィードバック。
0815デフォルトの名無しさん2010/04/10(土) 21:50:31
>>811
たしか、それぞれ独自に研究してた人たちが究極のを作ろうと集結したんだっけ。

この頃の話とか、Haskell に魅了された研究者たちの話って書籍化されてないのかな。
インタビューとか交えたノンフィクションがあれば是非読んでみたい。
0816デフォルトの名無しさん2010/04/10(土) 21:58:36
純粋かつ正格な言語はまだですか
0817デフォルトの名無しさん2010/04/10(土) 21:59:20
>>816
Clean
0818デフォルトの名無しさん2010/04/10(土) 22:00:54
>>814
正格には、MirandaやCleanから人が移って減ったわけではない。
他の純粋な人たちがみんなでHaskellを作っただけ。
0819デフォルトの名無しさん2010/04/10(土) 22:02:21
>>814
レスどうもです。そうでしたか。
今はどうやって関数型の利用を進めるかを考える時期なんでしょうかね
0820デフォルトの名無しさん2010/04/10(土) 22:10:03
既存理論を関数型言語で取り扱えるように整理し直せばいい。
計算機理論の体系をフレームに他分野の理論を読み替えて、
具体的解を取得できる形式系を作ればいい。
0821デフォルトの名無しさん2010/04/10(土) 22:20:54
Haskellで蓄積された型理論の研究成果はセキュアなシステムの構築に役立つことが期待されている。
Haskellの型システムに対する拡張の研究はこれからも続くだろう。

ttp://cacm.acm.org/magazines/2010/2/69367-type-theory-comes-of-age/fulltext
0822デフォルトの名無しさん2010/04/10(土) 22:24:22
数学の厳密な意味論に基づいて現実世界をモデル化すれば、
主観と客観がないまぜになった実学を洗練することができそうだな
0823デフォルトの名無しさん2010/04/10(土) 22:25:28
>>808

おめーかよw

おれは>>797だけど、厳密に言うとdoが抜けてるな

ちなみにScalaやClozureはJavaのランタイムに明るくないと
あんまり恩恵受けないってことはないの?
0824デフォルトの名無しさん2010/04/10(土) 22:42:43
恩恵というのが何を意味するのかわからないが、
確かにプログラミング言語を仕事で使うにはランタイムの知識も必要だといわれている。
しかしGHCも遅延評価のおかげでとても不可解だ。サーバでは使えないだろう。

ところでScalaもClojureも末尾最適化をしないらしい。
再帰ではなくイテレーティブに書かなければいけない。
関数型言語と称するには無理があるんじゃないか。
0825デフォルトの名無しさん2010/04/10(土) 22:51:42
遅延評価は慣れの問題じゃないの。
0826デフォルトの名無しさん2010/04/10(土) 22:54:22
遅延評価をデフォにしちまうとどうしても余計な処理が入るから遅くなっちゃうね。
0827デフォルトの名無しさん2010/04/10(土) 22:54:22
慣れというかたぶんバグった時の解析がキツい
0828デフォルトの名無しさん2010/04/10(土) 23:18:03
みなさんはロギングをしたいときどうしてますか?
すべての関数をIO型にするしかない?
0829デフォルトの名無しさん2010/04/10(土) 23:18:25
遅延評価はそのままでいいけど、グラフ簡約の様子をそのままグラフ化してプリントアウトしてくれるツールが欲しい
0830デフォルトの名無しさん2010/04/10(土) 23:25:36
>>828
なぜ Writer を使わない?
そういう意味ではないの?
0831デフォルトの名無しさん2010/04/11(日) 00:32:55
>>830
書き方が悪かった。
論点は,「ロギングを素直に挿入すると、関数の型を変えざるを得ないが、もっと良いやり方はないか?」
ということです。
0832デフォルトの名無しさん2010/04/11(日) 01:58:38
>>831
unsafeio
0833デフォルトの名無しさん2010/04/11(日) 02:12:34
>>831
デバッグのときとかに、関数の評価の様子を知りたいだけなら、traceを入れてghciで実行。

アプリケーションの機能としてログ出力を行いたいのなら、純粋な関数は引数が変わらないかぎりなんど実行しても動作が同じでそのログをとる必要はなく、
実行ごとに引数が変わるのは外部と関係するときだけだから、かならずIOモナドでログをとれるタイミングがあると思うんだけど?
モナド上で行わない限り、出力するタイミングを制御できないわけだし(評価順序をあれこれ考えればできなくもないけど)。
0834デフォルトの名無しさん2010/04/11(日) 06:18:00
>>815
最初期の人ではないが、RWHを書いたサリバンへのインタビューがネットで読める。
http://broadcast.oreilly.com/2009/01/the-power-of-haskell.html
0835デフォルトの名無しさん2010/04/11(日) 06:33:12
遅延評価は正格評価と比べて必ずしも遅いわけではない。
速い場合もあるし遅い場合もある。
値がサンクとして渡されるので、全体として時間コストも空間コストも予測が難しい。
GHCが遅いのは最適化よりも新規性目的で機能が取り込まれているせいもある。
0836デフォルトの名無しさん2010/04/11(日) 07:10:57
そういや、速いという話だったGRINの話題がちょっと前に出てなかったっけ?
0837デフォルトの名無しさん2010/04/11(日) 12:54:54
>>834
ありがと

ついでに、自分でも調べたら
「A History of Haskell: Being Lazy With Class」なる論文を見つけた。
http://research.microsoft.com/en-us/um/people/simonpj/papers/history-of-haskell/

面白そうなんで併せて読んでみる。
0838デフォルトの名無しさん2010/04/11(日) 15:49:53
Cabalがエラりまくる
なんだよこれ3パッケージに1つはエラーでビルド失敗するわ
0839デフォルトの名無しさん2010/04/11(日) 15:55:10
Cabalはパッケージマネージャではないから仕方ない
0840デフォルトの名無しさん2010/04/11(日) 16:18:28
じゃあどうすれば仕方あるんですか!?
0841デフォルトの名無しさん2010/04/11(日) 16:19:25
パッケージマネージャーを作る
0842デフォルトの名無しさん2010/04/11(日) 16:31:22
怒らないでマジレスしてほしいんだけど
おまえら、なんでこんな時間に書き込みできるわけ?
普通の人なら学校や会社があるはずなんだけど
このことを知った親は悲しむぞ?
もっと、現実を見ようぜ。
0843デフォルトの名無しさん2010/04/11(日) 16:52:19
今日日曜日だぞ
0844デフォルトの名無しさん2010/04/11(日) 17:11:07
週末と平日の区別すらないのか。
普通の人ならそんな質問をしないはずなんだけど。
もっと現実を見ようぜ。
0845デフォルトの名無しさん2010/04/11(日) 17:17:25
お仕事お疲れ様でし。
0846デフォルトの名無しさん2010/04/11(日) 17:20:32
マジレスするとそれはコピペなのでスルーしとけ
0847デフォルトの名無しさん2010/04/11(日) 17:23:55
Cabalが依存パッケージのビルドに失敗する
個別にインストールすれば成功するのに
なぜだろう
0848デフォルトの名無しさん2010/04/11(日) 18:30:13
マジレスすると >>846 もコピペなのでスルーしとけ
0849デフォルトの名無しさん2010/04/11(日) 18:38:54
駄目だiconvがインスコできね
死ねCabal
0850デフォルトの名無しさん2010/04/11(日) 18:41:27
>>849
では Cabal はもう死んだと思って、別の手段を使えばいいのではないか
0851デフォルトの名無しさん2010/04/11(日) 19:10:39
諸君らが愛してくれたCabalは死んだ。何故だ!
0852デフォルトの名無しさん2010/04/11(日) 19:12:51
>>851
研究のためのモルモットに過ぎなかったから
0853Mail: sage2010/04/12(月) 03:23:58
>>790
エピかつモニックだがアイソではない射がhaskellにあるか否か、とか。
答えは知らんが、圏論とhaskell以外の知識はいらない問題。
あと、圏論だけだけど、モナド<T,η,μ>からKleisli Triple<T,η,*>を導き、
Kleisli Tripleが満たす法則を証明し、
逆にモナド則をKleisli Tripleから導くとか。
0854デフォルトの名無しさん2010/04/13(火) 12:31:36
普通のハスケルがくどすぎて嫌
lispはすでに習得しているレベルの人向けな本はないですか
0855デフォルトの名無しさん2010/04/13(火) 12:38:15
>>854
・Haskell: The Craft of Functional Programming
・Algorithms A Functional Programming Approach
・The Haskell School of Expression
辺り

普通のハスケルは読んだこと無いから「くどさ」がよく分からんが、
もしかしたら一番上のもちょっとくどいかも知れん。

もう少し分かるなら、
・the fun of programming
も良い
0856デフォルトの名無しさん2010/04/13(火) 13:04:34
>>854

RWHはダメなの?

分かるところは飛ばせばいいんだし
0857デフォルトの名無しさん2010/04/13(火) 18:12:15
↓これの後半3ページをもーちょっと優しく解説してる記事か本を知りたいです
http://www.ipsj.or.jp/07editj/promenade/4703.pdf
0858デフォルトの名無しさん2010/04/13(火) 19:14:11
>>857
余計なおしゃべりのないそれが一番いいと思うんだけどな
イメージが湧かないというのなら
http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html
0859デフォルトの名無しさん2010/04/14(水) 06:37:27
>>857の記事を理解したくて緑色の本で圏論齧ってみたけどF-AlgとAdjointあたりでイミフになって挫折したことを思い出したわ
0860デフォルトの名無しさん2010/04/14(水) 10:15:50
>>857
図式が可換、っていうのは
「その図中で、ある地点からある地点への経路をどのように取っても
 (どういう射の合成を使っても)等しい」という意味なので、
例えば自然変換η:Ix->Tの自然性を示す可換図式は
       ηA
 IxA ---> TA
 f|             |Tf
  V   ηB  V
 IxB ---> TB
こいつは、以下の式と同じ意味
Ixf○ηB= ηA○Tf (fはA->Bの全ての射,Ixは恒等函手,Tは函手)
ドメイン、コドメインなんて図で考えてれば間違えることは無いので、
積極的に図式を使うといい。
0861デフォルトの名無しさん2010/04/14(水) 18:08:18
unsafePerformIOを使ってIO comonadを作るような論文があったと思うんですが思い出せません
心当りがある方がいらっしゃれば教えてください
0862デフォルトの名無しさん2010/04/14(水) 18:33:48
> FUNDIO: A Lambda-Calculus With letrec,case, Constructors,
> and an IO-Interface:Approaching a Theory of unsafePerformIO

辺り?
0863デフォルトの名無しさん2010/04/14(水) 18:35:43
ありゃ? 切れたね。

> FUNDIO: A Lambda-Calculus With letrec, case, Constructors,
> and an IO-Interface:Approaching a Theory of unsafePerformIO

辺り?
0864デフォルトの名無しさん2010/04/14(水) 18:36:44
letrec, の後ろで切れるのはnavi2chのバグかな?

> FUNDIO: A Lambda-Calculus With letrec, case, Constructors,
> and an IO-Interface:Approaching a Theory of unsafePerformIO

じゃねえかな。
0865デフォルトの名無しさん2010/04/14(水) 18:41:27
切れてないっすよ
0866デフォルトの名無しさん2010/04/14(水) 18:42:00
すまん、article-filterの設定のせいのようだ。
0867デフォルトの名無しさん2010/04/14(水) 20:42:00
すんません

左畳み込みでメモリリークが発生しやすくて、右畳み込みだと発生しにくい理由が分からんです
だれか教えてください
0868デフォルトの名無しさん2010/04/14(水) 22:36:37
foldr と foldl の計算は模式的に次のように表せる。

foldr : (f a1 (f a2 (f a3 i)))
foldl : (f (f (f i a1) a2) a3)

分かりやすくするために、本来はひとつの同じ関数 f に評価順番号を添えて区別してみる。

foldr : (f1 a1 (f2 a2 (f3 a3 i)))
foldl : (f1 (f2 (f3 i a1) a2) a3)

foldr はまず関数 f1 を a1 に適用し、a1 を評価し、
その結果としてカリー化された関数(仮に fa1 とする)を返す。
この時点で、a1 は既に評価されてしまったので、a1 の情報はその評価結果の値のみが残り、
a1 を評価するために必要だったその他の情報はもう不要なので捨てられる。
つまり、メモリから破棄される。

(fa1 (f2 a2 (f3 a3 i)))

次に関数 fa1 を (f2 a2 (f3 a3 i)) に適用し、(f2 a2 (f3 a3 i)) を評価する。
そして関数 f2 を a2 に適用し、a2 を評価し、カリー化された関数 fa2 を返す。

(fa1 (fa2 (f3 a3 i)))

以下繰り返し。

foldl の方は次スレ >>869
0869デフォルトの名無しさん2010/04/14(水) 22:38:18
>>868 からの続き

foldr : (f1 a1 (f2 a2 (f3 a3 i)))
foldl : (f1 (f2 (f3 i a1) a2) a3)

一方 foldl は関数 f1 を第1引数である (f2 (f3 i a1) a2) に適用しようとする。
このとき、第1引数を評価した結果のカリー化された関数がまだ完成していないから、
第2引数である a3 もまだ評価されずにメモリに残ることになる。
では、いつまで残るかというと、評価をシミュレートしてみれば分かるが、
括弧の最も奥の (f3 i a1) が評価され、(f2 その結果 a2) が評価され、
(f1 その結果) が評価された後のカリー化された関数がやっと a3 に適用されるまで残る。
入れ子の次のレベルの深さにある a2 はその一段階前までメモリに残る。

つまり、foldl はリストの後ろの方の要素ほどメモリに長く居続ける。
これがあなたの言うメモリリークというものの正体。
ちなみに、Haskell ではこういう一見分かりにくいメモリ領域の使用を
メモリリークではなくスペースリークと呼ぶ。

私はこう解釈しているが、もし違ってたらごめん。
0870デフォルトの名無しさん2010/04/14(水) 22:55:24
>>868
間違ってる

>その結果としてカリー化された関数(仮に fa1 とする)を返す。
>この時点で、a1 は既に評価されてしまったので、a1 の情報はその評価結果の値のみが残り、
fの定義のされ方にもよるけど、普通に二引数関数として定義されているなら(f a1)を評価してもa1は評価されない
仮に評価されたとしても、評価済みの値を持っておく必要があるので結局メモリが要る

>>867
foldrがfoldlに比べて空間効率がいいのは、畳み込みに使う関数が第二引数について非正格なとき(他にもある?)
例えば(++)は第二引数についてほぼ非正格なので、
concat = foldr (++) []
と定義すればO(1)の空間で動く(紙の上で追ってみれば分かると思う)のに対して
concat = foldl (++) []
だと酷いことになる
0871デフォルトの名無しさん2010/04/14(水) 23:16:49
>>870
>fの定義のされ方にもよるけど、普通に二引数関数として定義されているなら(f a1)を評価してもa1は評価されない

あ、そうか。
ベータ簡約はされるが(実装的にはポインタの差し替え程度だと思うが)、
評価までは未だされないのか。

やっぱり間違ってたか。
>>867 すまん、無視してくれ。
0872デフォルトの名無しさん2010/04/15(木) 00:26:45
どちらも、評価の結果全てが欲しいなら、空間効率は一緒、実行効率は畳み込み用の関数opに依存するね。
foldr op init [x1:x2:x3]
=> x1 `op` (foldr op init [x2:x3])
=> x1 `op` (x2 `op` (foldr op init [x3]))
=> x1 `op` (x2 `op` (x3 `op` (foldr op init [])))
=> x1 `op` (x2 `op` (x3 `op` init))

foldl op init [x1:x2:x3]
=> foldl op (init `op` x1) [x2:x3]
=> foldl op ((init `op` x1) `op` x2) [x3]
=> foldl op (((init `op` x1) `op` x2) `op` x3) []
=> ((((init `op` x1) `op` x2) `op` x3)
一部だけしか必要ない場合(headとかtake 2とか)は空間効率も違ってくる。
>>870の言う通り、opの第二引数が非正格なとき(第二引数を評価しなくても値が返せる場合のことでしょ?)で
なおかつ第二引数が必要なかった場合はfoldrは左端のx1を返すだけで後の計算はしないしメモリにも残さない。
foldlの場合は第一要素を求める場合、最終行まで展開したあと、
ここから更に全部を計算していく必要があってメモリは要るわ最終的にいらないところまで計算するわで効率が悪い。
0873デフォルトの名無しさん2010/04/15(木) 00:28:40
以下の2つの foldl, foldr の [1..5000000] の計算結果で、
t05l.hs: act n = foldl (+) 0 [1..n]
t05r.hs: act n = foldr (+) 0 [1..n]
t05l.hs, t05r.hs:
main = do
n' <- getArgs
let n = read (n' !!0)
putStrLn (show (act n))

>ghc -O2 --make {t05r.hs | t05l.hs} -prof -auto-all -caf-all -fforce-recomp

>t05l 5000000
12500002500000

>t05r +RTS -K100M -RTS 5000000
Stack space overflow: current size 100000000 bytes.
Use `+RTS -Ksize -RTS' to increase it.

>t05r +RTS -K800M -RTS 5000000
12500002500000

が得られた。
何かで、foldl のヒープの使用が、 foldr ではスタックの使用に変わったようなもの。。。
というようなことを聞いた不確かな記憶があるのですが、
サンクとはどのような情報をどのような形で保持しているのでしょうか?
0874デフォルトの名無しさん2010/04/15(木) 00:51:18
>>873
thunkってのは>>872にあるような、計算途中の式のこと。
x1 `op` (x2 `op` (x3 `op` init))みたいなの。
メモリ上にどう構成されているかは知らんが、遅延評価だとサンクが大きくなりがち。
08758702010/04/15(木) 08:59:34
言葉が足りなかったな、ごめん

>>872
全部を評価する場合でも、結果を順番に読み捨てていくなら空間効率も変わるよ
たとえば、
print $ foldr (++) [] $ map (flip replicate ()) [0..n]
は全体としてO(1)の空間で動くけど、foldrをfoldlにするとO(n)になる
0876デフォルトの名無しさん2010/04/15(木) 18:21:09
圏論ってアウェアネストレーニングみたい。
0877デフォルトの名無しさん2010/04/15(木) 18:28:44
>>873
foldl (+) 0 [1..10000000]とfoldr (+) 0 [1..10000000]をPreludeで走らせてタスクマネージャ見たけど、
大きな違いないね。

>>867
分かりません
0878デフォルトの名無しさん2010/04/15(木) 19:46:53
明日じゃん!
http://atnd.org/events/3820
0879デフォルトの名無しさん2010/04/15(木) 21:49:35
>>878
名古屋で似たようなミーティングはないですか?
東京まで行く時間がありません
0880デフォルトの名無しさん2010/04/15(木) 22:03:42
同じく岐阜だから行けん。
ビデオを撮ってストリーミングか、後で公開してくれるのなら
金払ってでも見るんだがなぁ
0881デフォルトの名無しさん2010/04/15(木) 22:35:18
プログラミングHaskellもRWHも読み終わった。 Hakellで作りたいものも頭の中にあるけど
その前に達人の書いたHaskellのコードを読んでみたい。

ってオレにおすすめのサイト教えて。よろ
0882デフォルトの名無しさん2010/04/15(木) 22:41:52
サイトではないが書籍なら「the fun of programming」はどうだ?
達人たちはこう考えるのか、という本だと思う
08838812010/04/15(木) 22:48:20
>>882

http://www.amazon.co.jp/Programming-Cornerstones-Computing-Jeremy-Gibbons/dp/0333992857/ref=sr_1_1?ie=UTF8&s=english-books&qid=1271339095&sr=1-1

これ?

ってか、書籍代節約するために読書用のモニタ増やしたので、出来ればサイトで・・・

英語読めます
0884デフォルトの名無しさん2010/04/15(木) 22:49:38
GHC付属のライブラリのうち興味が持てるやつを読むといいよ
0885デフォルトの名無しさん2010/04/15(木) 23:40:51
>>879
名古屋であるとしたら OCaml Meeting かなあ
0886デフォルトの名無しさん2010/04/16(金) 10:05:40
あ、ビューティフルコードで予習しないと
0887デフォルトの名無しさん2010/04/16(金) 21:31:15
>>878のに行った人いないの?報告plz
0888デフォルトの名無しさん2010/04/17(土) 12:50:07
twitter 見てたけど twitter の見方が分からなくてワケ分からんかった
0889デフォルトの名無しさん2010/04/17(土) 15:23:47
やっとモナドがわかりかけてきたお(^ω^)
0890デフォルトの名無しさん2010/04/17(土) 18:59:19
>>889
分かった様な気がしたり、また分からなくなったりを繰り替えしております(笑)
0891デフォルトの名無しさん2010/04/17(土) 19:24:26
monad以前にnatural transformationがわからない
いやそれ以前にdiagram, universal construction, limitあたりもあやしい
0892デフォルトの名無しさん2010/04/17(土) 20:21:30
hom集合がわからない
haskell的には、例えば「Int->String型のすべての単相関数」あるいは「型が同じ単相関数をすべて同一視して考えると…」っていうように考えればよいの?
0893デフォルトの名無しさん2010/04/18(日) 01:25:20
>>891
commutative diagramが分かればnatural transformが分かる。後は知らない。
>>892
単相関数なる単語は初めて聞くけど、同じ型の射を集めたものをhom集合と呼んでいるだけでしょ?
Haskellの型を圏の対象とし、Haskellの関数を射としてみればhom(Int,String)は
Int->Stringの関数全てをさす。
0894デフォルトの名無しさん2010/04/18(日) 11:04:05
>>887
報告っつっても、アジェンダの通りだったけど。
Simonさんの話はビューティフルコードの通り。STM は IORef みたいなことが
できるけど、アトミックな実行が保証されるからレースが起きないよとか、
ミサイル発射(という例が好きなんだなw)みたいな IO は型のおかげで
STM の中には入れられないよ、とか。

話のマクラに、Haskellって普及したよね、委員会による設計の言語
(一般には失敗するとされている)だけど、とかそんな話題もあった。
http://langpop.com/ のグラフをいくつか挙げたり。(LtUのグラフとか)

山本さんの話はmew.orgに使ってるHaskell製httpdについて。
性能の話が主だった。C10Kにも耐えるようにprefork使ったとかselect遅いとか。

山下さんの話は「擬データ」の紹介で、Pseudoというデータコンストラクタ(かな?)とか
:-> という演算子(Haskellの文法的にはコンストラクタだけど、多分コンストラクタじゃ
ないと思う)で、擬データから値を取り出す...のかな。ちょっと理解しきれなかった。

当日のプレゼン資料どっかで公開しないのかな?
0895デフォルトの名無しさん2010/04/18(日) 19:37:52
ミサイル発射は僕も大好きです
積極的に使おうと思います
0896デフォルトの名無しさん2010/04/18(日) 20:40:46
>>894
STMモナドの中に(小細工しなければ)普通のIOを入れられない、ってそんなに有益かなぁ。
STMモナドを入れ子にしてしまう危険を避けられるという点は有益だと思うけど。
0897デフォルトの名無しさん2010/04/18(日) 21:03:56
STMにIOを入れると、やり直しが発生したときにIOが複数回実行されてまずいんじゃないの?
08988962010/04/18(日) 21:37:21
>>897
ああ、そうか。たしかRWHに書いてあったのに忘れていた。
ありがとう。
0899デフォルトの名無しさん2010/04/18(日) 22:08:42
こんな本が出るのか、知らなかった
http://www.cambridge.org/uk/catalogue/catalogue.asp?isbn=9780521513388
0900デフォルトの名無しさん2010/04/18(日) 22:45:39
ありがと、早速予約してきた
0901デフォルトの名無しさん2010/04/18(日) 23:36:01
>>900

気の早いこって
0902デフォルトの名無しさん2010/04/19(月) 00:13:39
珠玉の関数型アルゴリズムデザイン!
0903デフォルトの名無しさん2010/04/19(月) 03:54:43
The Windows installer currently provides the 2010.1.0.0 Haskell Platform
0904デフォルトの名無しさん2010/04/19(月) 04:44:51
やっとか…
0905デフォルトの名無しさん2010/04/19(月) 17:31:26
Haskell + OpenGLでやってるんだけど、
OpenGLのウィンドウを閉じたときに処理が終わるようにってできないの?
Haskell 6.4.2 だと勝手に閉じるんだけど、
Haskell 6.10.4 だとならない。

**
windows 7
Haskell 6.10.4
HOpenGL 2.4.0.1
0906デフォルトの名無しさん2010/04/19(月) 18:35:14
GLFWのwindowCloseCallback等を使う
0907デフォルトの名無しさん2010/04/19(月) 21:09:49
双方向リスト↓を見つけたのですが…
ttp://mono.kmc.gr.jp/~oxy/w/?Lazy+Evaluation

中身がお互いに参照されてループになってて、GCでお掃除されず永久にメモリに居ることになったりするん?
0908デフォルトの名無しさん2010/04/19(月) 21:41:32
>>907
循環参照で困るのはリファレンスカウント GC くらいじゃね?
それもアルゴリズムを工夫することで解消できるし
レス数が900を超えています。1000を超えると表示できなくなるよ。