変な処理があれば修正してください。

*ループ1 [#a13940a0]
[[問題文>練習問題#eb2c4338]]
 import Data.IORef
 
 -- Define 'while'
 while test action = do
     val <- test
     if val then do { action; while test action }
     else return ()
 
 -- Some helpers for use with 'while'
 incr ref = modifyIORef ref (+1)
 test ref f = do { val <- readIORef ref; return (f val) }
 
 main = do
     ref <- newIORef 0
     while (test ref (< 5))
           (do { putStrLn "Hello World!"; incr ref })

*FizzBuzz [#f4c6d1f7]
[[問題文>練習問題#t52e5a48]]
 module Main where
 
 main :: IO()
 main = printAll $ map fizzBuzz [1..100]
        where
        printAll [] = return ()
        printAll (x:xs) = putStrLn x >> printAll xs
 
 fizzBuzz :: Integer -> String
 fizzBuzz n | n `mod` 15 == 0 = "FizzBuzz"
            | n `mod`  5 == 0 = "Buzz"
            | n `mod`  3 == 0 = "Fizz"
            | otherwise       = show n

*クイックソート [#w101147e]
[[問題文>練習問題(アルゴリズム編)#q8e0119e]]
 quicksort :: (Ord a) => [a] -> [a]
 quicksort [] = []
 quicksort (x:xs) =
     let smallerSorted = quicksort[a | a<-xs, a <= x]
         biggerSorted  = quicksort[a | a<-xs, a >  x]
      in smallerSorted ++ [x] ++ biggerSorted
 
 main :: IO()
 main = print $ quicksort [5, 7, 9, 2, 1, 3, 8, 4, 6, 0]

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS