k None The callback given to S returns a WalkStatus which determines which subsequent directories are traversed.&Continue recursing all subdirectories.Do not traverse deeper.Stop recursing entirely._Called with a directory, list of relative subdirectories, and a list of file names. If using /, the callback always returns '()'. If using Y, it returns whether to continue, prevent recursing further, or stop traversal entirely. recursively enumerates the given root directory, calling callback once per directory with the traversed directory name, a list of subdirectories, and a list of files.IThe subdirectories and file names are always relative to the root given. pathWalk "src" $ \dir subdirs files -> do forM_ files $ \file -> do when ("Test.hs" `isSuffixOf` file) $ do registerTestFile $ dir </> file &Traverses a directory tree, just like O, except that the callback can determine whether to continue traversal. See .&Traverses a directory tree, just like 3. The difference is that each callback returns a  L value, all of which are accumulated into the result. Note that this uses WriterT and thus frequently appends to the right of the monoid. Be careful to avoid accidental quadratic behavior by using a data structure that supports fast appends. For example, use Data.Sequence instead of a list.The lazy version of . Instead of running a callback per directory, it returns a lazy list that reads from the filesystem as the list is evaluated.d does not allow selective recursion. For richer functionality, see the directory-tree package at 2https://hackage.haskell.org/package/directory-tree         pathw_62djFBWslx2Iue1Sgr6FEOSystem.Directory.PathWalk WalkStatusContinue StopRecursingStopCallbackpathWalkpathWalkInterruptiblepathWalkAccumulate pathWalkLazybaseGHC.BaseMonoidreadDirsAndFilespathWalkInternal