
My first instinct is to just use anyM instead of allM allFilesThere :: MonadIO m => [Path Abs File] -> m Bool allFilesThere fs = liftIO $ anyM (not . doesFileExist . fromAbsFile) fs However you'll now have the opposite problem. It will take a lot of resources when all the files are there. But maybe that is okay for your use case? On Fri, Sep 21, 2018 at 4:25 AM PICCA Frederic-Emmanuel < frederic-emmanuel.picca@synchrotron-soleil.fr> wrote:
Hello,
I would like to have your advice in order to optimize this code. The purpose is to trigg an action 'a' if a list of files (thousands) exists. A process copy files from one directory to another.
allFilesThere :: MonadIO m => [Path Abs File] -> m Bool allFilesThere fs = liftIO $ allM (doesFileExist . fromAbsFile) fs
trigOnAllFiles :: MonadIO m => m r -> [Path Abs File] -> m r trigOnAllFiles a fs = go where go = do r <- allFilesThere fs if r then a else ( do liftIO $ threadDelay 1000000 go)
It works, but it consums a lot's of resources when all the files does not exists yet. So I would like your advice in order to optimize it :)
thanks for your help.
Frederic _______________________________________________ Beginners mailing list Beginners@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/beginners