Re: The p:pack step

Resend this one, since it hasn't been really considered

On Fri, Aug 10, 2007 at 8:54 AM, Innovimax SARL <innovimax@gmail.com> wrote:

> Alessandro,
>
> First, thanks for the link
>
> Going into detail of such a big list, we only lack few operations
> today (see below for the detailed discussion)
>
> Here they are
>
> * the step p:is-empty to check whether a sequence is empty.
>  I also propose as an alternative the possibility to add a <p:option
> name="limit" value="-1"> to p:count such that the value computed by
> p:count is unbounded (-1) or limited to the value of limit (I must
> admit I prefer the latter)
> ---> Use case : many time we would only need to check whether a
> sequence is 0, 1 or 2+ (so we would need to buffer only 2 documents to
> have this information)
>
> * add a <p:option name="stop-test-after-first-false" value="no"/>
> which would if positioned to true behave like span/break
> (takeWhile/dropWhile) // TODO : choose a better name
> ---> Use case : this one would be useful for processing interspersed
> list (A,A, A, B, A, A, A, C, A, A, A, D) etc.
>
> * and p:pack which I already proposed
> ---> Use case : compare sequence of documents
>
>
> The other functions could be done with existing steps (essentially
> p:viewport and p:split-sequence) and trough the use of recursion
>
> Some are out of reach because of we do not have port="*" anymore. I
> especially think of p:transpose which would need p:input port="*" AND
> p:output port="*"
>
> Mohamed
>
>
> === Details ===
>
> If we look carefully at this one
>
> We today have
> * All the basic function (trough the use of p:split-sequence) except the
> isEmpty
> * for the List transformation
>  o map is done trough p:viewport
>  o we effectively don't have reverse (but this couldn't be done
> efficiently anyway)
>  o intersperse can be done efficiently with p:viewport
>  o and transpose would effectively replace the need for p:pack, but
> p:transpose would be a p:input ="*"/p:output="*", which we do not have
> anymore
>
> * regarding folds, recursion is the solution (and the only one)
>
> * for special folds
>  o concat is done naturally by allowing multiple pipes in a p:input
> element
>  o the other functions are numeric (and we don't need them since our
> sequence contains document
>
> [skipping some numerical operations and infinite things..]
>
> * for sublists
>  o take/drop/splitAt can be done very efficiently with p:split-sequence
>  o takeWhile/dropWhile/span/break could be done with an extra option
> on p:split-sequence
>
> * group can be done with p:wrap
>
> For the rest, we haven't provide so far functions for removing
> duplicates/sorting and so on. I think that this choice make sense,
> since such operations are really costly and could be done with
> recursion
>
>
>
>
>
>
>
> On 8/10/07, Alessandro Vernet <avernet@orbeon.com> wrote:
> >
> > On 8/9/07, Norman Walsh <ndw@nwalsh.com> wrote:
> > > Mohamed asked to have p:pack on the agenda, but we didn't get to it.
> > > I'd like to close as many issues as possible in email.
> > >
> > > Please indicate if you are in favor of adding this step or not.
> >
> > a) I haven't encountered the need for such a component in the
> > pipelines I have written so far.
> >
> > b) There are number of basic operations on sequenced which we could
> > implement with a component. See [1] for what Haskell has to offer. Our
> > "pack" is similar to Haskell's "zip" (except zip drops items from the
> > longest list). But there are a number of other components we could
> > provide as well, and adding just pack at this point seems somewhat
> > arbitrary to me.
> >
> > So I don't have a strong objection to adding "pack", but would rather
> > leave it out for now, and add this to our virtual list of things to
> > keep in mind for V.2.
> >
> > [1]
> http://haskell.org/ghc/docs/latest/html/libraries/base/Data-List.html
> >
> > Alex
> > --
> > Orbeon Forms - Web 2.0 Forms, open-source, for the Enterprise
> > http://www.orbeon.com/
> >
> >
>
>
> --
> Innovimax SARL
> Consulting, Training & XML Development
> 9, impasse des Orteaux
> 75020 Paris
> Tel : +33 9 52 475787
> Fax : +33 1 4356 1746
> http://www.innovimax.fr
> RCS Paris 488.018.631
> SARL au capital de 10.000 €
>



-- 
Innovimax SARL
Consulting, Training & XML Development
9, impasse des Orteaux
75020 Paris
Tel : +33 9 52 475787
Fax : +33 1 4356 1746
http://www.innovimax.fr
RCS Paris 488.018.631
SARL au capital de 10.000 €

Received on Saturday, 3 May 2008 09:42:39 UTC