úλ$portable experimental/Sebastian Fischer (sebf@informatik.uni-kiel.de)  The function bfs/ enumerates the results of a non-deterministic E computation using breadth-first search. The implementation does not B guarantee that results are returned in any specific order but it C does guarantee that every result is eventually enumerated. Due to B the large memory requirements of breadth-first search you should  use idfs for expensive search.  The function idfs& computes the levels of a depth bound B computation using iterative deepening depth-first search. Unlike D breadth-first search it runs in constant space but usually takes a @ bit longer, depending on how the depth limit is increased. Use  idfsBy to control this. Don'&t use this algorithm if you know that C there is only a finite number of results because it will continue B trying larger depth limits without recognizing that there are no C more solutions. It can, however, produce results lazily: calling   take n . idfs4 terminates if the number of results is larger than  n.  The function idfsBy& computes the levels of a depth bound : computation using iterative deepening depth-first search ? incrementing the depth limit between searches using the given  number of steps.    level-monad-0.4.1Control.Monad.LevelsbfsidfsidfsBy DepthBound!Levelslevels runLevelsmerge