[Haskell-cafe] breadth first search one-liner?
Johannes Waldmann
waldmann at imn.htwk-leipzig.de
Mon Mar 22 06:02:32 EDT 2010
Dear all, there is this neat "one-line" BFS implementation
bfs :: Eq a
=> ( a -> [a] ) -> a -> [a]
bfs next start =
let xs = nub $ start : ( xs >>= next )
in xs
but it has a problem: it only works for infinite graphs. This is fine:
take 20 $ bfs ( \ x -> [2*x, x+1] ) 1
but this is not:
take 20 $ bfs ( \ x -> filter (>0) [ div x 2, x - 1 ] ) 10
Is there a nice way to repair this?
(I know how to code a BFS but here I'm asking for a one-liner.)
J. W.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
Url : http://www.haskell.org/pipermail/haskell-cafe/attachments/20100322/b1519f04/signature.bin
More information about the Haskell-Cafe
mailing list