2011-09-09から1日間の記事一覧

Haskellの評価戦略とfoldl/foldr (2)

前の記事 d:id:linglang:20110909:1315561320 で、 foldl (<+>) (z<+>a0) (a1:[a2,a3,a4,a5,a6]) という式を評価するとき、2通りの簡約(計算)順序があることを示しました。 foldl (<+>) b0 (a1:[a2,a3,a4,a5,a6]) {- 内部簡約 -} foldl (<+>) ((z<+>a0)<+>a1…

Haskellの評価戦略とfoldl/foldr (1)

関数型言語などで再帰を使ってプログラムを書く場合、 末尾再帰はループに最適化されるのでメモリ消費量が少なくなる と、一般には言われます。 が、これは評価戦略によっては成り立たなくなります。 foldlとfoldr リストの内容をある演算子によって畳み込む…