Skip to main content

Transitive closure

Functions

iterate(Function fn,Integer maxdepth,Object,Object)->(Object,Object)

iterate(Function fn,Integer maxdepth,Object o)->Object r

tclose(Function fn,Object o)->Bag

fn(fn(...fn(o)))


tclose(Function fn,Object o,Object a1,Object a2)->Bag of (Object,Object,Object)

fn(fn(...fn(o,a1,a2),a1,a2),a1,a2)


tclose(Function fn,Object o,Object a1)->Bag of (Object,Object)

fn(fn(...fn(o,a1),a1),a1)


tclose(Function fn,Object o,Object a1,Object a2,Object a3)->Bag of (Object,
Object,Object,Object)

fn(fn(...fn(o,a1,a2,a3),a1,a2,a3),a1,a2,a3)


tclosed(Function fn,Object o,Integer maxdepth)->(Object r,Integer depth)

Get the transitive closure of applying the function fn on the argument o recursively no more results produced or maxdepth reached. The result pairs contain the produced objects and their distances from the root o.


traverse(Function fn,Object o)->Bag

traverse(Function fn,Object,Object,Object)->Bag of (Object,Object,Object)

traverse(Function fn,Object,Object)->Bag of (Object,Object)

traverse(Function fn,Object,Object,Object,Object)->Bag of (Object,Object,Object,
Object)