diff --git a/src/Data/Array.purs b/src/Data/Array.purs index e183f21d..c3a2cf6f 100644 --- a/src/Data/Array.purs +++ b/src/Data/Array.purs @@ -1117,12 +1117,11 @@ unzip xs = -- | ```purescript -- | foldM (\x y -> Just (x + y)) 0 [1, 4] = Just 5 -- | ``` --- | -foldM :: forall m a b. Monad m => (a -> b -> m a) -> a -> Array b -> m a -foldM f a = unconsImpl (\_ -> pure a) (\b bs -> f a b >>= \a' -> foldM f a' bs) +foldM :: forall m a b. Monad m => (b -> a -> m b) -> b -> Array a -> m b +foldM f b = unconsImpl (\_ -> pure b) (\a as -> f b a >>= \b' -> foldM f b' as) -foldRecM :: forall m a b. MonadRec m => (a -> b -> m a) -> a -> Array b -> m a -foldRecM f a array = tailRecM2 go a 0 +foldRecM :: forall m a b. MonadRec m => (b -> a -> m b) -> b -> Array a -> m b +foldRecM f b array = tailRecM2 go b 0 where go res i | i >= length array = pure (Done res) diff --git a/src/Data/Array/NonEmpty.purs b/src/Data/Array/NonEmpty.purs index 119b74a9..a8ab26b4 100644 --- a/src/Data/Array/NonEmpty.purs +++ b/src/Data/Array/NonEmpty.purs @@ -437,10 +437,10 @@ zip xs ys = unsafeFromArray $ toArray xs `A.zip` toArray ys unzip :: forall a b. NonEmptyArray (Tuple a b) -> Tuple (NonEmptyArray a) (NonEmptyArray b) unzip = bimap unsafeFromArray unsafeFromArray <<< A.unzip <<< toArray -foldM :: forall m a b. Monad m => (a -> b -> m a) -> a -> NonEmptyArray b -> m a +foldM :: forall m a b. Monad m => (b -> a -> m b) -> b -> NonEmptyArray a -> m b foldM f acc = adaptAny $ A.foldM f acc -foldRecM :: forall m a b. MonadRec m => (a -> b -> m a) -> a -> NonEmptyArray b -> m a +foldRecM :: forall m a b. MonadRec m => (b -> a -> m b) -> b -> NonEmptyArray a -> m b foldRecM f acc = adaptAny $ A.foldRecM f acc unsafeIndex :: forall a. Partial => NonEmptyArray a -> Int -> a