module Hix.Zip where zipApply :: (a -> b) -> [a] -> [(a, b)] zipApply :: forall a b. (a -> b) -> [a] -> [(a, b)] zipApply a -> b f = (a -> (a, b)) -> [a] -> [(a, b)] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap \ a a -> (a a, a -> b f a a) zipApplyA :: Traversable t => Applicative m => (a -> m b) -> t a -> m (t (a, b)) zipApplyA :: forall (t :: * -> *) (m :: * -> *) a b. (Traversable t, Applicative m) => (a -> m b) -> t a -> m (t (a, b)) zipApplyA a -> m b f = (a -> m (a, b)) -> t a -> m (t (a, b)) forall (t :: * -> *) (f :: * -> *) a b. (Traversable t, Applicative f) => (a -> f b) -> t a -> f (t b) forall (f :: * -> *) a b. Applicative f => (a -> f b) -> t a -> f (t b) traverse \ a a -> (a a,) (b -> (a, b)) -> m b -> m (a, b) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> a -> m b f a a zipApplyL :: (a -> b) -> [a] -> [(b, a)] zipApplyL :: forall a b. (a -> b) -> [a] -> [(b, a)] zipApplyL a -> b f = (a -> (b, a)) -> [a] -> [(b, a)] forall a b. (a -> b) -> [a] -> [b] forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b fmap \ a a -> (a -> b f a a, a a)