続々・縦書き

続・縦書きのさらに続き


Arrowで書き直してみた

import List
import Control.Arrow

main = getContents >>= arr (lines >>> reverse >>> normalize >>> transpose >>> unlines >>> putStrLn)

-- 長さを同じにする
normalize = (maximum . map length &&& map (++ repeat ' ')) >>> uncurry (map . take)