fizzbuzz
とりあえずチュートリアル読みながらの今の時点でのもの。
module Main where import IO fiz' n | n < 1 = Nothing | n > 100 = Nothing | 0 == (mod n 15) = Just "FizBuz" | 0 == (mod n 3) = Just "Fiz" | 0 == (mod n 5) = Just "Buz" | otherwise = Just $ show n fiz 1 = ["1"] fiz n = case (fiz' n) of Just x -> fiz (n-1) ++ [x] main=doimp doimp = do putStr "Enter:" line <- getLine yet <- evalu line if yet then doimp else return () where evalu :: String -> IO Bool evalu l | l == "" = return False | (read l) < 1 = do putStrLn "Too low" ; return True | (read l) > 100 = do putStrLn "Too high" ; return True | otherwise = do putStrLn ( show $ fiz $ read l) ; return True