potoki-core-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 =
fix $ \ doLoop -> do
fetch <- fetchIO
case fetch of
Nothing -> onEnd
Just element -> onElement element >> doLoop
{-| 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