module Data.Tuple.Tools ( curry3, uncurry3, rotate ) where curry3 :: ((a, b, c) -> d) -> a -> b -> c -> d curry3 f x y z = f (x, y, z) uncurry3 :: (a -> b -> c -> d) -> (a, b, c) -> d uncurry3 f (x, y, z) = f x y z rotate :: Floating a => a -> (a, a) -> (a, a) rotate rad (x, y) = (x * cos rad - y * sin rad, x * sin rad + y * cos rad)