第7回 スタートHaskell2 (最終回)
この「元々は別の所からアイデアを拝借したけど、今やその形跡が名前しか残っていない」ことを表現する適切な名前は無いのかしら・・・ #start_haskell
2013-01-20 13:21:43DiffList { (1:2:3:) } みたいになっているとイメージすれば、差分っぽいイメージになるかも #start_haskell
2013-01-20 13:23:09今やByteString等に統合されたBlaze Builder(継続を使ったコピーにより実装)で効率的に連結できるので,差分リストを使う必要は無い.#start_haskell
2013-01-20 13:26:58ByteStringやテキストを結合したいときは、独自のビルダが実装されているため、差分リストは使わなくてもよい。#start_haskell
2013-01-20 13:27:05Writerはログ書くため、Readerはコンフィグ内容を持つため、Stateは書き換える系の状態を持つため、という理解なのですがそんな感じ? #start_haskell
2013-01-20 13:30:23Readerの使用例: FileからConfigを読んでそれを使う場合。関数が返すべき値を既に知っているつもりで扱う。 #start_haskell
2013-01-20 13:31:02Reader は引数が必要というコンテキストを持ち運んでいるとイメージしている。そのままですが #start_haskell
2013-01-20 13:31:18Q: h >>= f = \w -> f (h w) w とか直感的に理解できて然るべきものなんですか A: 気にしないで #start_haskell
2013-01-20 13:35:04Readerはとりあえずなんか何回も同じ引数を書くの面倒くせーってときに使うのか、ってことで理解しました。仕組みはともかく使い方はね。 #start_haskell
2013-01-20 13:38:50w :: r, h :: (r - > a), f :: (a -> (r -> b))だから,f (h w)の型が(r -> b)になるのでf (h w) wの型がb,\w -> f (h w) wの型がr -> bか. #start_haskell
2013-01-20 13:40:09とりあえず、まずこれを読むと見通しがよくなるかも。「例題で比較する状態系のモナド」 http://t.co/htwKyrzj #start_haskell
2013-01-20 13:42:21Stateモナド、ちゃんと内部の計算を把握するのは少し頑張る必要があると思うけど、使う分には簡単で(必要なときにgetとputするだけ)、ごく普通の「オブジェクトのフィールドをget/setしながら実行するメソッド」というイメージ持ってる。 #start_haskell
2013-01-20 13:43:12個人的には Reader が理解出来てようなく State が理解できた。State = Writer + Reader なので、Reader の方が簡単な感じ。#start_haskell
2013-01-20 13:43:20