-- ### 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)