{-
-- EPITECH PROJECT, 2025
-- Glados
-- File description:
-- List
-}

module Common.Utils.List
    ( listEq
    , zipWith3M_
    ) where

import Control.Monad()

listEq :: [a] -> [b] -> Bool
listEq :: forall a b. [a] -> [b] -> Bool
listEq [] [] = Bool
True
listEq (a
_:[a]
xs) (b
_:[b]
ys) = [a] -> [b] -> Bool
forall a b. [a] -> [b] -> Bool
listEq [a]
xs [b]
ys
listEq [a]
_ [b]
_ = Bool
False

zipWith3M_ :: Monad m => (a -> b -> c -> m d) -> [a] -> [b] -> [c] -> m ()
zipWith3M_ :: forall (m :: * -> *) a b c d.
Monad m =>
(a -> b -> c -> m d) -> [a] -> [b] -> [c] -> m ()
zipWith3M_ a -> b -> c -> m d
f [a]
as [b]
bs [c]
cs = [m d] -> m ()
forall (t :: * -> *) (m :: * -> *) a.
(Foldable t, Monad m) =>
t (m a) -> m ()
sequence_ ((a -> b -> c -> m d) -> [a] -> [b] -> [c] -> [m d]
forall a b c d. (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]
zipWith3 a -> b -> c -> m d
f [a]
as [b]
bs [c]
cs)