On 18 Feb 2013, at 18:38, Wolfgang Laun <wolfgang.l...@gmail.com> wrote:

> I guess I've always spoken my mind in favour of a clean syntax, even
> if it means a little extra typing. I dislike expressions with internal
> bindings; the traditional binding at the start of an expression is
> sufficient.
I don't like nested bindings, I think it was there before due to backwards 
compatibility.

If we drop it for DRL6, we need to figure out a migration strategy. One 
possible way is we allow it in the parser stiff, as a config option (off by 
default, with warning of deprecated feature).

Also field bindings are hangover from the Lisp days. Maybe we don't need 
property bindings anymore within patterns. Most use cases can use the pattern 
binding accessor for property access.
when
   $p : Pattern()
then
    println( $p.name );
end

Field bindings allow bindings to complex expression results, involving nested 
accessors. We can use the "set" proposal I mentioned, and keep those outside of 
patterns.
when
   $p : Pattern()
   $age : { $p.age * someGlobalIt }  // $age will bind to the result of the 
expression
then
    println( $p.name + ":" + $age );
end


Mark
> 
> Cheers
> Wolfgang
> 
> On 18/02/2013, Edson Tirelli <ed.tire...@gmail.com> wrote:
>>   Wolfgang,
>> 
>>   Thank you for reporting. Mario is fixing it.
>> 
>>   On a related note, for Drools 5, for backward compatibility, we still
>> allowed bindings in the middle of expressions. We were discussing if this
>> should be disallowed from Drools 6 forward? Things like:
>> 
>> Person( $name : name == "Bob" || $alive : isAlive && ($age : age > 40 ) )
>> 
>>   Things get quite complicated and a bit hard to read as expressions get
>> more complex. It also clashes with the ternary operator ?:.
>> 
>>   Any thoughts on retaining support for this kind of syntax or removing
>> it?
>> 
>>   Edson
>> 
>> On Mon, Feb 18, 2013 at 7:45 AM, Wolfgang Laun
>> <wolfgang.l...@gmail.com>wrote:
>> 
>>> Below is a self-contained DRL which should not compile because the sum
>>> isn't a boolean expression. (Note that omitting "$x:" results in the
>>> correct diagnostic "predicate ... must be a boolean".)
>>> 
>>> declare Foo
>>>  a: double
>>>  b: double
>>> end
>>> 
>>> rule what
>>> when
>>>    $c: Foo( $x: a + b )
>>> then
>>>    System.out.println( "foo: " + $c );
>>> end
>>> _______________________________________________
>>> rules-dev mailing list
>>> rules-dev@lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/rules-dev
>>> 
>> 
>> 
>> 
>> --
>>  Edson Tirelli
>>  JBoss Drools Core Development
>>  JBoss by Red Hat @ www.jboss.com
>> 
> _______________________________________________
> 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