module Data.Function.Twist where twist :: (a -> b -> c -> d -> e) -> c -> d -> a -> b -> e twist fun c d a b = fun a b c d (<<~~>>) = twist twist5r :: (a -> b -> c -> d -> e -> f) -> c -> d -> e -> a -> b -> f twist5r fun c d e a b = fun a b c d e (<<~~>>>) = twist5r twist5l :: (a -> b -> c -> d -> e -> f) -> d -> e -> a -> b -> c -> f twist5l fun d e a b c = fun a b c d e (<<<~~>>) = twist5l twist5 :: (a -> b -> c -> d -> e -> f) -> d -> e -> c -> a -> b -> f twist5 fun d e c a b = fun a b c d e (<<<~~>>>) = twist5 twist6 :: (a -> b -> c -> d -> e -> f -> g) -> d -> e -> f -> a -> b -> c -> g twist6 fun d e f a b c = fun a b c d e f (<<~~~>>) = twist6 twist7r :: (a -> b -> c -> d -> e -> f -> g -> h) -> d -> e -> f -> g -> a -> b -> c -> h twist7r fun d e f g a b c = fun a b c d e f g (<<~~~>>>) = twist7r twist7l :: (a -> b -> c -> d -> e -> f -> g -> h) -> e -> f -> g -> a -> b -> c -> d -> h twist7l fun e f g a b c d = fun a b c d e f g (<<<~~~>>) = twist7l twist7 :: (a -> b -> c -> d -> e -> f -> g -> h) -> e -> f -> g -> d -> a -> b -> c -> h twist7 fun e f g d a b c = fun a b c d e f g (<<<~~~>>>) = twist7