30 lines
884 B
Haskell
30 lines
884 B
Haskell
-- ### Definions ###
|
|
sum' :: [Int] -> Int
|
|
sum' [n] = n
|
|
sum' (x:xs) = x + sum' xs
|
|
|
|
avg :: [Int] -> Float
|
|
avg l = (/) (fromIntegral (sum' l)) (fromIntegral (length l))
|
|
|
|
powerOfN :: (Num a, Integral b) => a -> b -> [a]
|
|
powerOfN base max = [base ^ d | d <- [0 .. max]]
|
|
|
|
timePairs :: [(Int, Int)]
|
|
timePairs = [(h, m) | h <- [0 .. 23], m <- [0 .. 59]]
|
|
|
|
-- ### Tests ###
|
|
main :: IO ()
|
|
main = do
|
|
putStrLn "\ESC[32mSum 1..100:\ESC[0m"
|
|
putStrLn (show (sum' [1..100]))
|
|
putStrLn "\ESC[32mAverage of [1, 2]:\ESC[0m"
|
|
putStrLn (show (avg [1, 2]))
|
|
putStrLn "\ESC[32mAverage of [2, 4, 6, 8, 100]:\ESC[0m"
|
|
putStrLn (show (avg [2, 4, 6, 8, 100]))
|
|
putStrLn "\ESC[32mPowers of 2 up to 2^100:\ESC[0m"
|
|
putStrLn (show (powerOfN 2 100))
|
|
putStrLn "\ESC[32mPowers of 10 up to 10^20:\ESC[0m"
|
|
putStrLn (show (powerOfN 10 20))
|
|
putStrLn "\ESC[32mAll hour-minute pairs:\ESC[0m"
|
|
putStrLn (show timePairs)
|