module BS where dieZahl :: Integer dieZahl = 6 * (3 + 4) square :: Integer -> Integer square x = x * x smaller :: (Integer, Integer) -> Integer smaller (x,y) = if x <= y then x else y smallerc :: Integer -> (Integer -> Integer) smallerc x y = if x <= y then x else y three :: Integer -> Integer three x = 3 infinity :: Integer infinity = infinity + 1 multiply :: (Integer, Integer) -> Integer multiply (x, y) = if x == 0 then 0 else x * y double, double2 :: Integer -> Integer double x = x + x double2 x = 2 * x plus :: (Integer, Integer) -> Integer plus (x, y) = x + y incr :: Integer -> Integer incr y = plus (1, y) plusc :: Integer -> (Integer -> Integer) plusc x y = x + y incrc :: Integer -> Integer incrc = plusc 1 twice :: (Integer -> Integer) -> (Integer -> Integer) twice f x = f (f x) quad :: Integer -> Integer quad = twice square quad' :: Integer -> Integer quad' = square . square signum :: Integer -> Integer signum x | x < 0 = -1 | x == 0 = 0 | x > 0 = 1 fact :: Integer -> Integer fact n | n < 0 = error "fact with negative argument" | n == 0 = 1 | n > 0 = n * fact (n - 1) f :: Float -> Float -> Float f x y = (a + 1) * (a + 2) where a = (x + y) / 2 f2 :: Float -> Float -> Float f2 x y = (a + 1) * (b + 2) where a = m / 2 b = m / 3 m = x + y