I think it is a dangerous move.
It is easy for users to understand that each pattern matches a fact:
A( ... )
B( ... )
C( ... )
If you start moving patterns to inside other patterns, you risk to
lose the legibility:
A( b == B( ... ), c == C(...) )
Main problem I see is with cross product abuses:
A( oneb == B(...), thesameb == B(...) )
The above may match the same B as intended, but may also match other
Bs, leading to errors and bugs that will be hard to track.
I would continue making patterns explicit and not nested.
Although, the object navigability is desired and much waited I think:
$b : B(...)
A( c == $b.c )
Also, there are some cases that we would do good allowing nesting:
$c : Cheesery( ... )
$s : List( size < 3 ) from collect( Cheese( type == "stilton" ) from
$c.getCheeses() )
Just my .02 c.
[]s
Edson
Olenin, Vladimir (MOH) wrote:
Don't have any antlr experience, but I'd say that would be a very valuable
addition - probably more BAs would be able to pick it up this way (without
having to fallback on custom DSL)
Vlad
-----Original Message-----
From: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED] On Behalf Of Mark Proctor
Sent: 20 March 2007 15:54
To: Rules Dev List
Subject: Re: [rules-dev] sugar
Could also allow:
Cheese( name = Person( location == "london").favourCheese )
Can also use this to constrain on the fact itself, instead of just a field:
Person( cheese = Cheese( type == "stilton ) )
This could be use in config options:
Call( duration < CallConf().minDuration )
But as Edson pointed out it is open to abuse and misunderstanding, how
long till people do:
Call( duration < CallConf().maxDuration, duration > CallConf().maxDuration )
Which is more like doing the following which has cross product issues:
CallConf( $maxDuration1 : maxDuration )
CallConf( $maxDuration2 : maxDuration )
Call( duration < ,$maxDuration1 duration > $maxDuration2 )
Mark
Mark Proctor wrote:
I've been thinking of an idea to make rules more expressive, its just
syntax sugar at the parser level, but thought i'd ask feedback - if
anyone with antlr skills wants to make this work, let us know :)
Instead of doing:
$p : Person($favouriteCheese : favouriteCheese )
Cheese( name == $favouriteCheese )
We should allow the following:
$p : Person()
Cheese( name == $p.favouriteCheese )
We could take this further and in places where a pattern is not used
elsewhere allow:
Cheese( name == Person().favouriteCheese )
Mark
_______________________________________________
rules-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________
rules-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________
rules-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-dev
--
Edson Tirelli
Software Engineer - JBoss Rules Core Developer
Office: +55 11 3124-6000
Mobile: +55 11 9218-4151
JBoss, a division of Red Hat @ www.jboss.com
_______________________________________________
rules-dev mailing list
[email protected]
https://lists.jboss.org/mailman/listinfo/rules-dev