potoki-core-2.2.8.2: library/Potoki/Core/IO/Fetch.hs
module Potoki.Core.IO.Fetch where
import Potoki.Core.Prelude
import Potoki.Core.Types
{-| Fetch all the elements running the provided handler on them -}
fetchAndHandleAll :: Fetch element -> IO () -> (element -> IO ()) -> IO ()
fetchAndHandleAll (Fetch fetchIO) onEnd onElement =
let
loop = do
fetch <- fetchIO
case fetch of
Nothing -> onEnd
Just element -> onElement element >> loop
in loop
{-| Fetch and handle just one element -}
fetchAndHandle :: Fetch element -> IO a -> (element -> IO a) -> IO a
fetchAndHandle (Fetch fetchIO) onEnd onElement =
do
fetch <- fetchIO
case fetch of
Nothing -> onEnd
Just element -> onElement element