On 19/08/2011 05:53, Wolfgang Laun wrote:


On 18 August 2011 19:27, Mark Proctor <mproc...@codehaus.org <mailto:mproc...@codehaus.org>> wrote:

    On 18/08/2011 18:17, Wolfgang Laun wrote:
    On 18 August 2011 18:38, Mark Proctor <mproc...@codehaus.org
    <mailto:mproc...@codehaus.org>> wrote:

        We are looking to tighten up accumulate, using a new keyword to
        differentiate. It will use ; for separation, to follow a
        similar form to
        a 'for' loop.

        acc( CE*;
        <func>*;
        <guard>? )

        so something like:

        acc( $o : Order();
                $min : min( $o.value ),
                $max : max($o.value);
                $min > 100 && $max < 100 )


    Given that I can do this today using an eval after the accumulate
    CE: What's the big gain, as compared to the nuisance of yet
    another CE, with the need to document (which, traditionally,
    isn't done so eagerly) and teach and learn and getting it free of
    bugs?
    I find the above looks cleaner and easier to read, the more we can
    reduce the need for 'eval' the better. It is a common enough use
    case that I feel it is worth support.


Well, a condition that's never true isn't a good use case. Even after repairing it, the example does not tell you /where /the min and max, respectively, are. Apart from determining the exact value of mininimum and maximum (which could easily be added, together with locating the containing Order!)
   not Order( value <= 100 )
   not Order( value >= 200 )
is more descriptive that the rather procedural "for" hidden in the proposed "acc".
I wasn't showing it as a use case, I was showing it as illustrative of the syntax. I could have just done
acc( $o : MyClass();
        $f1 : fun1( $o ),
        $f2 : fun2( $o );
        somBooleanFunc( $f1, $f2 ) )

Mark

Perhaps there are better use case; this one does not convince me.

-W



    Acc is used a lot for CEP use cases and we need a syntax that can
    compete succinctly with alternative approaches - if we look like a
    dog dinner, we'll lose out to alternative CEP syntaxes. The
    separation of the segments using ";" gives a clearer distinction
    too, and it's 'for' loop like nature should more natural to people
    new to the engine.

    Mark


    -W


        I have wondered if we could use pipes on our functions, to be
        able to
        pass the results of one function into another - just not sure
        how that
        will work or look yet.
        func(...) in func(...)
        func(...) | func(...)

        Mark

        _______________________________________________
        rules-dev mailing list
        rules-dev@lists.jboss.org <mailto:rules-dev@lists.jboss.org>
        https://lists.jboss.org/mailman/listinfo/rules-dev




    _______________________________________________
    rules-dev mailing list
    rules-dev@lists.jboss.org  <mailto:rules-dev@lists.jboss.org>
    https://lists.jboss.org/mailman/listinfo/rules-dev


    _______________________________________________
    rules-dev mailing list
    rules-dev@lists.jboss.org <mailto:rules-dev@lists.jboss.org>
    https://lists.jboss.org/mailman/listinfo/rules-dev




_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org
https://lists.jboss.org/mailman/listinfo/rules-dev

Reply via email to