fileExtract :: (a -> FilePath -> IO (Maybe b)) -> Find a b
fileExtract p =
    Find $ \(a, fp) -> p a fp >>= return . maybe [] (\b -> [(b, fp)])
fileExtract :: (a -> FilePath -> IO (Maybe b)) -> Find a b
fileExtract p =
    Find $ \(a, fp) -> p a fp >>= return . maybe [] (\b -> [(b, fp)])
fileExtract p =
    Find $ \(a, fp) -> p a fp >>= return . maybe [] (\b -> [(b, fp)])