import Data.List hiding (group) -- sq x returns the square of x -- sq :: Integer -> Integer sq :: Integer -> Integer sq x = x*x -- absolute x returns the absolute value of x absolute :: Integer -> Integer absolute x | x >= 0 = x absolute x | x < 0 = -x absolute' :: Integer -> Integer absolute' x | x >= 0 = x | x < 0 = -x absolute'' :: Integer -> Integer absolute'' x | x >= 0 = x | otherwise = -x absolute''' :: Integer -> Integer absolute''' x = if x>=0 then x else -x absolute'''' :: Double -> Double absolute'''' x = sqrt (x^2) -- evaluation by substitution -- sq 5 -- absolute (-4) -- power x n returns x to the power n power :: Integer -> Integer -> Integer power x 0 = 1 power x n | n < 0 = error "n is negative" power x n = x * (power x (n-1)) -- repli n s returns n copies of s as a string repli :: Integer -> String -> String repli 0 s = "" repli n s = s ++ (repli (n-1) s) -- regions n computes the number of regions formed by n lines regions :: Integer -> Integer regions 0 = 1 regions n = n + regions (n-1) -- group n xs divides xs up into groups of length n group :: Integer -> String -> [String] group n "" = [] group n s = [genericTake n s] ++ group n (genericDrop n s)