-- | 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

slipl :: (a -> b -> c -> d) -> c -> a -> b -> d
slipl f c a b = f a b c

(<<~>) = slipl

slipr4 :: (a -> b -> c -> d -> e) -> b -> c -> d -> a -> e
slipr4 f b c d a = f a b c d

(<~~>>) = slipr4

slipl4 :: (a -> b -> c -> d -> e) -> d -> a -> b -> c -> e
slipl4 f d a b c = f a b c d

(<<~~>) = slipl4

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

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