[Home] [By Thread] [By Date] [Recent Entries]
It should be possible to write a higher-order function
item()* zipTrees(node() tree1, node() tree2, item()* zipnodeFun(), item()* ziparcFun()) where we do not know in advance what exactly the functions zipnodeFun(), and ziparcFun() will be doing. One application is tree merging, another obvious one is tree differencing, yet another could produce the results of any binary operation (boolean, arithmetic, bit-wise, ...) on any pair of corresponding nodes, ..., etc. the possibilities are unlimited. A word of caution is that getting agreement on the semantics of (or even explaining well) such a function can be very problematic -- as the experience with the F & O function deep-equal() showed... There's already a foldl-tree() function in FXSL -- whenever there's time I could try to write a zipTrees() function.
On 6/22/06, Wendell Piez <wapiez@xxxxxxxxxxxxxxxx> wrote: At 11:51 AM 6/22/2006, David wrote: > > awesomely elegant solution works > >'course elegance, like beauty, is in the eye of the beholder. Walking >over the tree(s) recursively carrying a bit of state with you might take >some more lines of code, but is probably more efficient than working out >/descendant::*[$n] each time.
|

Cart



