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 infixl 8 <<~~>> 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 infixl 8 <<~~>>> 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 infixl 8 <<<~~>> 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 infixl 8 <<<~~>>> 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 infixl 8 <<~~~>> 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 infixl 8 <<~~~>>> 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 infixl 8 <<<~~~>> 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 infixl 8 <<<~~~>>>