Drkcore

07 10 2010 Haskell RWH Tweet

Real World Haskell 14章

二周目読んでて今のとこ一番感動した。

14.13のモナドとファンクタのところで

join :: m (m a) -> m a

として

(>>=) :: AltMonad m => m a -> (a -> m b) -> m b
xs >>= f = join (fmap xs)

となるが、ここへ至る過程が素晴らしい。

14.10のリストモナドにおけるバインド(>>=)を型から構成していく過程を経て拡張していくのでここをよく読んでおくとよい。

ちなみにリストモナドのバインドは

xs (>>=) f = concat (map f xs)

それぞれ、

Prelude> :t map
map :: (a -> b) -> [a] -> [b]
Prelude> :t concat
concat :: [[a]] -> [a]

リストの型が[] a つまり[a]であることから類推できる。

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

About

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

Tag

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

Ad

© kzfm 2003-2021