:: [FilePath] | path (list of directories to search) |
-> [ChaseName] | todo (list of modules still to find) |
-> [ChaseName] | done (list of modules already found) |
-> accu | initial (start value of accumulator) |
-> ([FilePath] -> ChaseName -> IO (Either cu String)) | parse (function that attempt to find and parse a module) |
-> (cu -> [ChaseName]) | imports (function that extracts imports from
a parse result) |
-> (ChaseName -> [ChaseName] -> cu -> accu -> IO accu) | on module (function that computes a new
accumulator from a parse result) |
-> (ChaseName -> accu -> IO accu) | on missing (function that computes a new
accumulator value when parsing failed) |
-> IO accu | result (accumulated value) |
A generic import chasing function. The type of the final result is a
parameter, which will usually be instantiated to a list of parsed
modules. |