module Data.FoldApp.Identity
( FoldlApp
, FoldrApp
, foldlApp
, foldlMApp
, foldrApp
, foldrMApp
, Monad
)
where
import Control.Monad
( Monad
)
import qualified Data.FoldApp.Generic as G
type FoldlApp p r f = G.FoldlApp (~) p r f
type FoldrApp p r f = G.FoldrApp (~) p r f
foldlApp ::
forall p r f.
(FoldlApp p r f) =>
(r -> p -> r) -> r -> f
foldlApp = G.foldlApp @(~)
foldlMApp ::
forall m p r f.
(Monad m, FoldlApp p (m r) f) =>
(r -> p -> m r) -> r -> f
foldlMApp = G.foldlMApp @(~)
foldrApp ::
forall p r f.
FoldrApp p r f =>
(p -> r -> r) -> r -> f
foldrApp = G.foldrApp @(~)
foldrMApp ::
forall m p r f.
(Monad m, FoldrApp p (m r) f) =>
(p -> r -> m r) -> r -> f
foldrMApp = G.foldrMApp @(~)