haskell-ja > Archives > 2009/10/31

2009/10/31 01:44:43 UTC[1..100]>>=pen
#
(<*>) を定義する必要がないのでわざわざ
#
Applicative m =>
#
にしなくてよいので。
#
よいのでは。
#
Applicative m =>
#
でも十分だけど、より制限の少ない
#
Pointed m =>
#
でよいのではと。
#
ところで今日の夜は #haskell.jp の日でしたっけ。
2009/10/31 02:25:57 UTCnwn
#
うん、kazu さんの提示されたコードでは Pointed で十分なんですが、Typeclassopedia 本文のコードのほうはまた話が別
2009/10/31 02:31:08 UTCnwn
#
でも今日ってなんかあったっけか
#
せっかくだから Typeclassopedia の輪読(?)でもしますか #haskell.jp で。とりあえず日本語訳読んできて疑問点を話し合う的な
2009/10/31 05:13:59 UTCshelarcy
#
Real World Haskell 読書会参加中。
#
現在は 7.4 あたり。
#
hGetContents で取得したデータを二カ所で使いたかったら?
#
いくつか方法は考えらる。でも、遅延 I/O で取得してきたデータを二カ所で共有(保持)するのは高くつくので、二回読んだ方が良いのじゃない?
#
二回読みたくないのはどういう時?
#
リソースを節約したい。でも、メモリをたくさん取って高く着くので、二回読んだ方が安くなるのでは?
#
Haskell をつかうなら発想の転換が重要。
#
既に閉じてしまったハンドルに対して hClose を呼び出したら、どうなるの?
#
hClose のドキュメントによると、hClose を既に閉じてしまったハンドルに適用しても何も起きないようです。http://www.haskell.org/ghc/docs/6.10.4/html/libraries/base/System-IO.html#v%3AhClose
2009/10/31 05:29:55 UTCshelarcy
#
forkIO や forkOS をすればハンドルはコピーされるの?
#
されません。ハンドルをコピーする処理は含まれていないので。どちらかのスレッドでハンドルを閉じると、両方のスレッドでハンドルが利用できなくなります。コピーしたければそういう処理をして下さい。
#
ハンドルをコピーするには?
#
System.Posix.IO を使ってハンドルから FD(ファイル・ディスクリプタ)に変換して、FD をコピーする。
#
http://www.haskell.org/ghc/docs/6.10.4/html/libraries/unix/System-Posix-IO.html#9
#
でも、この方法は unix パッケージに依存するので移植性がない……。
#
おっと、handleToFd は元の Handle を閉じてしまうので注意。
2009/10/31 05:57:33 UTCshelarcy
#
7.5.1 mapM を紹介するより前に sequence を紹介した方が良いのでは?
#
この説明では mapM が魔法の関数に見えてしまう。
#
mapM、mapM_、sequence、sequence_ の定義 http://www.haskell.org/ghc/docs/6.10.4/html/libraries/base/src/Control-Monad.html#sequence
2009/10/31 06:06:55 UTCshelarcy
#
http://www.sampou.org/haskell/report-revised-j/standard-prelude.html#$vsequence
#
でも mapM が sequence で定義できることは mapM の本質ではないよね。
#
(途中で効率性の話がでましたが、それは "foldr/build" で解決されます。)
#
sequence を先に説明した方が、アクションの作成(IO のリストの作成)とアクションの実行がきれいに分離されるのでは?
2009/10/31 06:38:32 UTCshelarcy
#
>> の読みは? then とか seq とか。
#
GHC の内部実装では、今でも thenIO とか bindIO とかを使っています。
#
http://www.haskell.org/ghc/docs/6.10.4/html/libraries/base/src/GHC-IOBase.html#IO
#
instance  Monad IO  where
    {-# INLINE return #-}
    {-# INLINE (>>)   #-}
    {-# INLINE (>>=)  #-}
    m >> k      =  m >>= \ _ -> k
    return x    = returnIO x

    m >>= k     = bindIO m k
    fail s      = failIO s
#
thenIO がどこで使われていたかは覚えてませんが。
2009/10/31 06:55:22 UTCshelarcy
#
m >> k = m `thenIO` k ね。
2009/10/31 07:20:34 UTCshelarcy
#
今日は Real World Haskell の飲み会で誰も #haskell.jp にアクセスできないと思うので、14日にしましょう。 > nwn
#
8章に入りました。
#
bytesting の性能は C のコードを超えるって……
#
bytestring は stream fusion を使って中間データ構造を削除してくれるので、性能はかなりよくなるはず。
#
でも、C よりも速くなるかというと……GHC の最適化機能の改善が必要なのではないでしょうか?
#
最新の gcc と争おうとすると大変。gcc 3 なら勝てるかもしれないけれど。
2009/10/31 07:30:07 UTCshelarcy
#
まあ、GHC の最適化上の問題を直して、supercompilation を入れれば C より 10% 速くなるという話もありますが。
#
http://community.haskell.org/~ndm/downloads/slides-supercompilation_for_haskell-03_mar_2009.pdf
#
なお twitter でもつぶやきましたが、現在 GHC に直接 supercompilation を追加する試みが行われているようです。http://hackage.haskell.org/trac/ghc/wiki/Supercompilation
2009/10/31 07:40:11 UTCmasahiro_sakai@twitter
#
終わったのでRWH読書会に移動。まだしばらくやってそうですか? &gt;
2009/10/31 07:42:14 UTCshelarcy@twitter
#
はい。第8章に入ったばっかりなので、もうしばらく続いていると思います。
2009/10/31 07:52:36 UTCnwn
#
ふむ、 HIMA の内部でやる感じになるのかな(って勝手に言ってますが) 了解です
2009/10/31 07:52:42 UTCshelarcy
#
regex-posix って Windows で使えたっけ?
#
今 Text.Regex.Posix の説明(8.3)を読んでいるところ。
#
まあ、Real World Haskell の著者は Windows ユーザーには冷たい(というか unix ユーザーしか想定していない)ので、使えなかったとしてもこれは仕様でしょうけれど。
2009/10/31 08:05:30 UTCshelarcy
#
あっ、bytestring と性能を争っていたのは gcc 4.3 だったかも。ソースがすぐに見つからないので、確証はありませんが。
#
gcc 4.3 と比べているのなら、gcc 4.4 には負けるけれどというような話だったと思います。
2009/10/31 08:14:52 UTCshelarcy
#
会場には Windows ユーザーがいませんね。 > regex-posix
#
家に帰ってから調べるか、酒井さんに regex-posix があるかどうか調べてもらうことにしますか。
2009/10/31 08:26:42 UTCshelarcy
#
ロードされる package のバージョンが原著と違うのは?
#
原著が出たのは GHC 6.10.1 がリリースされる直前で GHC 6.8.x を使って書かれていたけれど、翻訳では GHC 6.10.4 に出力を合わせている。
2009/10/31 08:38:39 UTCshelarcy
#
酒井さん来た。
2009/10/31 08:52:42 UTCshelarcy
#
++ の効率性について色々。
#
性能については、GHC (+ライブラリ)の最適化が頑張っているせいで「一般的な性能分析と、実際に使用する場での性能」が異なってくるのが難しいですね。
#
まあ、この段階ではそこまでの分析は求められていませんが。
2009/10/31 09:07:17 UTCshelarcy
#
Real World = 「浮世」?
#
Real World Haskell = 浮世の Haskell
2009/10/31 09:19:52 UTCshelarcy
#
listMatches の then、else の位置は大丈夫?
#
Haskell prime(Haskell 2010)なら大丈夫になるはず。http://www.haskell.org/pipermail/haskell-prime/2009-July/002812.html
#
ただし、Haskell prime がでるまで GHC の実装は変更しないと前に言っていました。
#
x <- の xより後ろに来ているので、listMatches でのインデントは問題ない。
#
最後のが結論ね。
2009/10/31 09:30:57 UTCshelarcy
#
例外処理どうするのかと思っていたのですが、Control.OldException モジュールを使うようにしていますね。
2009/10/31 09:46:59 UTCshelarcy
#
Control.Exception の新しい例外処理については手前味噌ですが、私の連載の「例外処理」に関する回を読んでみて下さい。http://itpro.nikkeibp.co.jp/article/COLUMN/20081104/318426/
2009/10/31 09:52:41 UTCshelarcy
#
Control.OldException と Control.Exception の利用が混在している……。
#
読書会終了しました。
2009/10/31 13:48:03 UTCshelarcy
#
ありました。 > Windows に regex-posix
2009/10/31 15:01:40 UTCheita
#
Typeclasspedia (の訳)を読んで、ようやく shelarcy さんの連載が Functor から始まった理由が理解できた。3年前かかった。