モナドを書くときはdo記法が圧倒的に読みやすい
Haskellでモナドを使ったコードを書くとき、2つの書き方があります。
>>=を使って真面目に書く方法とdo記法です。
前回のYesodによるプログラムを例にとって両者を比較してみます。
まずは>>=を使った書き方。
getUsers = getYesod >>= \users -> return $ aUsers users >>= \us -> return us
次にdo記法。
getUsers = do users <- getYesod us <- return $ aUsers users return us
比較するとdo記法が圧倒的に読みやすいと思います。
>>=を使った書き方の何が分かりにくいって、ある関数の結果の値が次の行を見ないと分からないことです。
対してdo記法の場合、関数実行の結果を受け取っているように見えるので、何をやっているかがつかみやすいと思います。
また読みやすさだけでなく書きやすさの面でも、do記法の方がタイプ量が減る傾向にあります。
せっかく用意されている便利な記法、do記法は積極的に使った方が良い気がします。
余談ですが
Haskellを学んでいると変数が少ない方がかっこよい、という価値観があるような気がします。$で関数の実行をつなぐより.で関数合成した方がかっこいい、という価値観。
でもこのスタイルで書かれたプログラムって、読むのが難しいと思うんですよね。
これって軟弱な感性かなぁ?