On Wed, Oct 30, 2002 at 02:25:02PM +0000, Piers Cawley wrote:
> Given an acyclic graph of nodes, where a node has a method C<kids>,
> returning a list of all the nodes it points to, is it the case that
> the following code:
>
> sub descent($src, $dst) {
> when $src == $dst { return $dst }
> when !$src.kids { die }
> otherwise {
> return ( $src, descent(any($src.kids), $dst))
> }
> }
>
> will return a list of nodes making up a path between the nodes $src
> and $dest? Or do I need to replace C<any> and C<die> with an
> appropriate implementation of C<choose> and C<fail>?
>
> It'd be really cool if superpositions had this kind of backtracking
> behaviour, but I'm *so* not going to be surprised if it doesn't...
Hey, that's neat. Although it looks like it returns the $src when there
isn't a path. You probably want it to return undef or something.
Perhaps where you have "die" there should be something like
$src.collapse or maybe just "return undef".
-Scott
--
Jonathan Scott Duff
[EMAIL PROTECTED]