packages feed

language-dickinson-1.0.0.1: src/Control/Monad/Ext.hs

module Control.Monad.Ext ( zipWithM
                         , zipWithM_
                         ) where

import           Data.Foldable      (sequenceA_)
import           Data.List.NonEmpty
import qualified Data.List.NonEmpty as NE

zipWithM :: (Applicative m) => (a -> b -> m c) -> NonEmpty a -> NonEmpty b -> m (NonEmpty c)
zipWithM f xs ys = sequenceA (NE.zipWith f xs ys)

zipWithM_ :: (Applicative m) => (a -> b -> m c) -> NonEmpty a -> NonEmpty b -> m ()
zipWithM_ f xs ys = sequenceA_ (NE.zipWith f xs ys)