@vvakame mapM は f::a -> IO b を引数にとって、IO [b]を返します。このとき f x は〈w_n,y〉(yは無視される)にbindされて〈w_n+1,z::b〉を返すので、要素それぞれに適用したときのz::bを集めたリストが返ります
2012-11-16 19:21:41@NaOHaq 途中よくわかりませんでしたがMaybeモナドとかにmapする時はアンスコ無しのmapM使うとMaybe [a] とかが得られるからそっち使うわー。ってことですね!
2012-11-16 19:23:27@NaOHaq @vvakame 対して、mapM_ はリストの要素それぞれにa->IO bを適用したときの返り値bの値を全部捨てて、() を返します
2012-11-16 19:23:40https://t.co/7e8NRE9v 今コレだけど、 dumpUnknown の層がなんであるのかわからない。なんなのこれ…。SQLのリザルトは行と列の2層あれば十分じゃないの…。
2012-11-16 19:29:41@vvakame こやつはむっちゃ特殊な関数で、 f x に対して f $ trace ("hoge:"++show x) $ x という風に挟み込んでやると、 f x が評価されるときに "hoge: (xの値)" を端末に出力します
2012-11-16 19:32:51@NaOHaq @vvakame ……ということができるんですが、xの値を出力するためには当然そのときxの値が決まっていないといけないので、traceの第一引数は正格評価されます。そのため評価順序が変わることがあるのでややこしいです。
2012-11-16 19:35:40同じ悩みを発見しました / Unnecessarily deep list in execStatement return type https://t.co/l5RqEBTV / https://t.co/zF2LyJeI
2012-11-16 19:46:38Justな値だけfilterしたい時にどう書けばいいかわからん。(\m -> if Just _ then true else false) みたいに書きたいんだけど。
2012-11-16 19:52:07@kakkun61 そのへんの構文を全然オボエテナイという…!なんか1行で書かないといけなかったような気がするんですがそんなことないんでしたっけ。とりあえずぐぐってきます。
2012-11-16 19:53:58@vvakame 僕も、基本的にパターンマッチの方使うので case は構文覚えてないです :p
2012-11-16 19:56:11