与えられた高さのピラミッドを作る
module Main where import System cjust :: Int -> String -> String cjust w s | w <= length s = s | otherwise = margin ++ s ++ margin where margin = replicate ((w - (length s)) `div` 2) ' ' pyramid :: [String] pyramid = map (flip replicate '*') [1,3..] main :: IO () main = do h <- getArgs >>= return.read.head putStr $ unlines $ map (cjust (h*2-1)) $ take h pyramid
実行。
^o^ >runhaskell pyramid.hs 4 * *** ***** ******* ^o^ >runhaskell pyramid.hs 5 * *** ***** ******* ********* ^o^ >runhaskell pyramid.hs 6 * *** ***** ******* ********* *********** ^o^ >runhaskell pyramid.hs 1 * ^o^ >runhaskell pyramid.hs 0
お,高さ0でもちゃんと動く。