-- | Bit-shift style argument re-arrangement module Data.Function.Slip where slipr :: (a -> b -> c -> d) -> b -> c -> a -> d slipr f b c a = f a b c (<~>>) = slipr infixl 8 <~>> slipl :: (a -> b -> c -> d) -> c -> a -> b -> d slipl f c a b = f a b c (<<~>) = slipl infixl 8 <<~> slipr4 :: (a -> b -> c -> d -> e) -> b -> c -> d -> a -> e slipr4 f b c d a = f a b c d (<~~>>) = slipr4 infixl 8 <~~>> slipl4 :: (a -> b -> c -> d -> e) -> d -> a -> b -> c -> e slipl4 f d a b c = f a b c d (<<~~>) = slipl4 infixl 8 <<~~> slipr5 :: (a -> b -> c -> d -> e -> f) -> b -> c -> d -> e -> a -> f slipr5 f b c d e a = f a b c d e (<~~~>>) = slipr5 infixl 8 <~~~>> slipl5 :: (a -> b -> c -> d -> e -> f) -> e -> a -> b -> c -> d -> f slipl5 f e a b c d = f a b c d e (<<~~~>) = slipl5 infixl 8 <<~~~>