const resultPath = Effect.iterate(
{path:startPath, keepSearching:true, first:true},
{
while: ({keepSearching})=>keepSearching,
body: ({ path, first }) =>
Effect.flatMap(
first ? Effect.succeed(path) : goUpOneLevel(path),
(nextPath)=> pipe(
nextPath,
specificFileNotInDir,
Effect.map(
(keepSearching) => ({
path:nextPath,
keepSearching,
first:false
})
)
)
)
}
)
const resultPath = Effect.iterate(
{path:startPath, keepSearching:true, first:true},
{
while: ({keepSearching})=>keepSearching,
body: ({ path, first }) =>
Effect.flatMap(
first ? Effect.succeed(path) : goUpOneLevel(path),
(nextPath)=> pipe(
nextPath,
specificFileNotInDir,
Effect.map(
(keepSearching) => ({
path:nextPath,
keepSearching,
first:false
})
)
)
)
}
)