自分が書いたコード:
import Control.Monad
main = do n <- liftM read getLine
putStrLn . take n . cycle $ "abcd"
お手本コード(bjin氏参考):
main = interact$(`take`cycle"abcd").read
interact使って書くとごちゃごちゃしそうだったので、doブロックで書いた。Control.MonadのliftMは便利。適用する関数の引数の数に応じて、liftM2, liftM3, liftM4, liftM5 などもある。
bjinさんはゴルフ好きな感じである。takeをinfix operationにしてセクション(二項演算子の部分適用をするための手法)を実現してるのは面白いテクニックだなーと。
0 件のコメント:
コメントを投稿