doの乱用
メモ。
Haskell Reportによれば、(do a)という式の意味は(a)と同じなので、aがモナドな型を持っている必要はない。これを利用して、括弧を減らすためだけにdoを使うことができる。
import Data.Complex import Data.Monoid import Data.Text.Lazy.Builder import Data.Text.Lazy.Builder.RealFloat -- | 普通 complexInPolar :: Complex Double -> Builder complexInPolar x = fromString "(" <> realFloat (magnitude x) <> fromString ":" <> realFloat (phase x) <> fromString ")" -- | doの乱用 complexInPolar' :: Complex Double -> Builder complexInPolar' x = fromString "(" <> do realFloat $ magnitude x <> fromString ":" <> do realFloat $ phase x <> fromString ")"