-- sq x returns the square of x
sq :: Integer -> Integer
sq x = x^2  -- or x*x

-- sq 5 = 5^2 = 25

-- absolute x returns the absolute value of x
absolute :: Integer -> Integer
absolute x | x >= 0 = x
absolute x | x < 0  = -x

-- Vad är `absolute (-5)`?
-- absolute (-5) = -(-5) = 5

absolute' :: Integer -> Integer
absolute' x | x >= 0    = x
            | otherwise = -x

absolute'' :: Integer -> Integer
absolute'' x = if x >= 0 then x else -x

test1 = 2 >= 1
test2 = (>=) 2 1

-- power x n returns x to the power n
power :: Integer -> Integer -> Integer
power x n | n < 0 = error "negative n"
power x 0 = 1
-- power x 1 = x  -- Not needed!
power x n = x * power x (n-1)

-- power 2 3 = 2 * power 2 2
--           = 2 * (2 * power 2 1)
--           = 2 * (2 * (2 * power 2 0))
--           = 2 * (2 * (2 * 1))
--           = 8

{-

comment over several lines...

-}