- From: L.G. Meredith <lgreg.meredith@gmail.com>
- Date: Sat, 10 Dec 2005 17:46:34 -0800
- To: Michael Dyck <jmdyck@ibiblio.org>
- Cc: www-ql@w3.org
- Message-ID: <5de3f5ca0512101746l63b36e5cm8d25829a0f37c353@mail.gmail.com>
Michael, Thanks. i will look over you solution careful. Specifically, i will run it through the formal semantics by hand to see if i can convince myself that it works. Best wishes, --greg On 12/10/05, Michael Dyck <jmdyck@ibiblio.org> wrote: > > > "L.G. Meredith" wrote: > > > > Michael, > > > > Thanks for taking a whack at it. But, there was a slight > > misunderstanding. The predicates hold of a (sub)collection -- not of > > an element. > > Ah, right. Well, that should be even easier: > > function decompose( input-set ): > element coll { > for bipartition in bipartitions( input-set, (), () ) > where p1(bipartition/coll[0]) and p2(bipartition/coll[1]) > return bipartition > } > > function bipartitions( remaining-input, part1_so_far, part2_so_far ): > if remaining-input is empty: > element coll { > element coll {part1_so_far}, > element coll {part2_so_far} > } > else > let h := head(remaining-input), > t := tail(remaining-input) > return > ( > bipartitions( t, part1_so_far + h, part2_so_far ) > , > bipartitions( t, part1_so_far, part2_so_far + h ) > ) > > Or, you could push the "p1 and p2" test into bipartitions(); it would > make the latter un-generic, but it might save space, depending on > the XQuery implementation. > > -Michael > > > > > > function decompose( input-set ): > > element coll { foo( input-set, (), () ) } > > > function foo( remaining-input, p1s_so_far, p2s_so_far ): > > if remaining-input is empty: > > element coll { > > element coll {p1s_so_far}, > > element coll {p2s_so_far} > > } > > else > > let h := head(remaining-input), t := > > tail(remaining-input) > > return > > if p1(h): foo( t, p1s_so_far + h, p2s_so_far ) else: > > () > > , > > if p2(h): foo( t, p1s_so_far, p2s_so_far + h ) else: > > () > > > > It should be fairly straightforward to translate that to > > proper XQuery. > > > > -Michael > > > > -- > > L.G. Meredith > > > > 505 N 72nd St > > Seattle, WA 98103 > > > > +1 206.650.3740 > > -- L.G. Meredith 505 N 72nd St Seattle, WA 98103 +1 206.650.3740
Received on Sunday, 11 December 2005 01:46:42 UTC