http://karetta.jp/article/blog/oneline/008668 それはそうと、これはやはり継続を使って解く方がいいと思うのですよね(schemeなので)。 maxInt =: 0x7fffffff ::Tree a = Node a [Tree a] norm t = let ([[t2:_]:_],_) = norm_t t end maxInt in t2 where end n = ([[],[]],n) norm_t (Node i ts) cont n = let ([ts2,ts3:tss4],m) = norm_ts ts cont (min i n) in ([[Node (i/m) ts2:ts3]:tss4],m) norm_ts [] cont n = let (ts2,m) = cont n in ([[]:ts2],m) norm_ts
http://karetta.jp/article/blog/oneline/008668 http://konoe.lab2.kuis.kyoto-u.ac.jp/~hanatani/tdiary/?date=20061206 計算量が減るというわけではないんだな。 逆に、末尾再帰でなくなるせいで、空間計算量が増えるということもないわけではなかったり。 - http://haskell.g.hatena.ne.jp/jmk/20061206/1165380658 ところで、モナドもこうなっていると俄然かっこいいですね(何が?) - そうか、わかった。 tnorm t = let (r, m) = runWriter iteration in runReader r (getMin m) where iteration = unComp $ traverse (Comp . fmap tr
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く