triple x = 3 * x sgn x | x > 0 = 1 | x < 0 = -1 | otherwise = 0 nor :: Bool -> Bool -> Bool nor False False = True nor _ _ = False nand :: Bool -> Bool -> Bool nand True True = False nand _ _ = True fib 0 = 0 fib 1 = 1 fib n = fib (n - 1) + fib (n - 2) fib' n = fib'' 0 1 n where fib'' a _ 0 = a fib'' a b n = fib'' b (a+b) (n-1) fac' _ 0 = 1 fac' f n = n * f (n - 1) fac = fix fac' sumsq = on (+) (^2)