by shigemk2

当面は技術的なことしか書かない

アプリカティブ則(Haskell)

Haskell/Applicative functors - Wikibooks, open books for an open world

「すごいHaskellたのしく学ぼう!」 11章のまとめ · GitHub

アプリカティブ則のHaskellだとこうなるらしいよ。

pure id <*> v = v                            -- Identity
pure f <*> pure x = pure (f x)               -- Homomorphism
u <*> pure y = pure ($ y) <*> u              -- Interchange
pure (.) <*> u <*> v <*> w = u <*> (v <*> w) -- Composition

1番目。

Prelude Control.Applicative> -- pure id <*> v = v
Prelude Control.Applicative> [1,2,3]
[1,2,3]
Prelude Control.Applicative> pure id <*> [1,2,3]
[1,2,3]

2番め。

Prelude Control.Applicative> pure sum <*> pure [1,2,3]
6
Prelude Control.Applicative> pure (sum [1,2,3])
6

3番目。

Prelude Control.Applicative> [] <*> pure [1,2,3]
[]
Prelude Control.Applicative> pure ($ [1,2,3]) <*> []
[]

4番目がよくわからない。