リストモナドで
id:rubyco:20070704:mulを見て、「これはリストモナドだ〜」と思いました。こんな感じ。
module Main (main) where main :: IO () main = mapM_ putStrLn f where f :: [String] f = do c1 <- ['-', '=', '+'] c2 <- ['-', '=', '+'] c3 <- ['-', '=', '+'] return $ concat $ replicate 20 $ c1 : c2 : c3 : [] -- => ------------------------------------------------------------ -- --=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--= -- --+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+ -- -=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=- -- -==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-== -- -=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+ -- -+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+- -- -+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+= -- -++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++ -- =--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=--=-- -- =-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-= -- =-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+ -- ==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==- -- ============================================================ -- ==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+ -- =+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+- -- =+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+= -- =++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++ -- +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+-- -- +-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-=+-= -- +-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-+ -- +=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=-+=- -- +==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+== -- +=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=+ -- ++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++-++- -- ++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++=++= -- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++