[rules-dev] sugar

Michael Neale michael.neale at gmail.com
Tue Mar 20 20:28:31 EDT 2007


Also, when I worked on protyping an analysis module a long time ago, it is
actually pretty easy to validate and "warn" people about possible
combination explosions (of course like all warnings, people are free to
ignore them) - but at least this means people are aware of the dangers.

On 3/21/07, Edson Tirelli <tirelli at post.com> wrote:
>
>
>    Yes, that is the part that I agreed.... :)
>     I just would NOT want:
>
> Cheese( name == Person().favouriteCheese )
>
>    []s
>    Edson
>
> Michael Neale wrote:
>
> > I am not sure about the "danger", but I do like anything that avoids
> > extra binding.
> > So lets not throw the baby out with the bathwater.
> >
> > I really like:
> > $p : Person()
> > Cheese( name == $p.favouriteCheese )
> >
> > I think that should definately be allowed.
> >
> >
> > On 3/21/07, *Edson Tirelli* <tirelli at post.com
> > <mailto:tirelli at post.com>> wrote:
> >
> >
> >        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: rules-dev-bounces at lists.jboss.org
> >     <mailto:rules-dev-bounces at lists.jboss.org>
> >     >[mailto:rules-dev-bounces at lists.jboss.org
> >     <mailto:rules-dev-bounces at lists.jboss.org>] 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
> >     >>rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> >     >>https://lists.jboss.org/mailman/listinfo/rules-dev
> >     >>
> >     >>
> >     >>
> >     >
> >     >_______________________________________________
> >     >rules-dev mailing list
> >     >rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> >     > https://lists.jboss.org/mailman/listinfo/rules-dev
> >     >_______________________________________________
> >     >rules-dev mailing list
> >     >rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> >     >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 <http://www.jboss.com>
> >
> >
> >     _______________________________________________
> >     rules-dev mailing list
> >     rules-dev at lists.jboss.org <mailto:rules-dev at lists.jboss.org>
> >     https://lists.jboss.org/mailman/listinfo/rules-dev
> >
> >
> >------------------------------------------------------------------------
> >
> >_______________________________________________
> >rules-dev mailing list
> >rules-dev at lists.jboss.org
> >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
> rules-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/rules-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20070321/68814298/attachment.html 


More information about the rules-dev mailing list