Applicative Style
こういう形式の書き方を「Applicative Style」と呼ぶ
理解する際は、前者を見たほうがわかりやすい

実際に書く際は、前者の省略版のような形で、後者を使うことが多い

関数適用の一般化と捉える
通常の関数適用
f a b c
のApplicative版として
fa <*> ma <*> mb <*> mc
のように書ける
<*>
は apply
のエイリアスで、関数をapplyしてる、と読めば意味がわかりやすい
do
式を使った書き換え
Applicativeの話なので、Monad (do)は関係ないが、Monadに慣れた人からするとわかりやすいかも知れない
hsfoo = do
a <- m1
b <- m2
return $ f a b
参考
applicativeの論文
[| f x1 x2 ... |]
applicative styleの糖衣構文
実用例など
最初の例を実践するためには、Applicativeにする必要はなく、Applyで十分であることがわかる
