メモ。 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の乱用 complexInP