Files
loop/src/MonadHelp.hs
T

18 lines
360 B
Haskell

module MonadHelp where
untilJust :: Monad m => m (Maybe a) -> m a
untilJust m = go
where
go = do
mayx <- m
maybe go return mayx
untilJustCount :: Monad m => m (Maybe a) -> m (a, Int)
untilJustCount m = go 0
where
go i = do
mayx <- m
case mayx of
Nothing -> go (i+1)
Just x -> return (x,i)