apply2 :: (Integer -> Integer -> Integer) -> Integer -> Integer -> Integer -> Integer apply2 f num1 num2 num3 | num3 == 0 = num1 + 0 | even num3 = apply f (f num1 num2) num2 (num3 `mod` 2) | otherwise = error "divided by zero"