Drkcore

28 09 2010 Haskell RWH Tweet

Real World Haskell 4章 (foldrを使ってfoldlを定義する)

RWHの4章にfoldlをfoldrによって書く例が載っていたのだけど、ぱっと見ただけではわからなかったので良く考えてみた。

ProductName Real World Haskell―実戦で学ぶ関数型言語プログラミング
Bryan O'Sullivan,John Goerzen,Don Stewart
オライリージャパン / ¥ 3,990 ()
在庫あり。

myFoldl :: (a -> b -> a) -> a -> [b] -> a

myFoldl f z xs = foldr step id xs z
    where step x g a = g (f a x)

これは結局

foldr step id xs

によって出来た関数に本来の初期値であるzを与えていると。

例えば

myFoldl (+) 0 [1..3]

だと

foldr (+) id [1..3]

により

\x -> (+3) $ (+2) $ (+1) (id x)

が出来てこれに元の初期値0が与えられて(3+(2+(1+0)))となる。

参考

  • Real World Haskell の 4.6.8 節の myFoldl

About

  • もう5年目(wishlistありマス♡)
  • 最近はPythonとDeepLearning
  • 日本酒自粛中
  • ドラムンベースからミニマルまで
  • ポケモンGOゆるめ

Tag

Python Deep Learning javascript chemoinformatics Emacs sake and more...

Ad

© kzfm 2003-2021