- 追加された行はこの色です。
- 削除された行はこの色です。
[[練習問題]]&br;
※このページの筆者はHaskellを今日初めて書きました。&br;
変な処理があれば修正してください。
*ループ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]