Java allows confusing constructs too but they are left for the developer to handle rather than imposed by the language specification:-
 
class Smurf {
 
    int a;
    int b;
 
    Smurf(int a, int b) {
        a = a;
        b = b;
    }
 
}


From: rules-dev-bounces@lists.jboss.org [mailto:rules-dev-bounces@lists.jboss.org] On Behalf Of Mark Proctor
Sent: 24 September 2010 00:46
To: rules-dev@lists.jboss.org
Subject: Re: [rules-dev] Drools syntax diagrams - redrawn

yes, ? wasn't easy due to java and data munging would get messy as we map between things.

So we just left it as any valid java identifier, but using the $ prefix as a coding convention make it easier to differentiate fieldnames and bindings
Person( age : age )
Person( age == age )
 
The above looks a little confusing compared to:
Person( $age : age )
Person( age == $age )

Davide wants to enforce the $ prefix so that parsing can be easier.

Mark
On 24/09/2010 00:31, Michael Neale wrote:
The $name: Pattern thing I am convinced is to do with Mark's prior history of being abused by perl ;)

But the real reason is we wanted to use ?name: Pattern() - using "?" like the clips lineage of languages - but IIRC even ilog allows that. We wanted our labels to be compatible with java source code - where $variable is a valid name (although no one actually uses it) and ?name is not. 

So here we are ;)


On Fri, Sep 24, 2010 at 12:29 AM, Greg Barton <greg_barton@yahoo.com> wrote:
Yes, and I don't think we want to take readability cues from Perl. :)

GreG

On Sep 23, 2010, at 3:03, Wolfgang Laun <wolfgang.laun@gmail.com> wrote:

On 23 September 2010 09:31, Bruno Unna <bruno.unna@gmail.com> wrote:
FWIW: in Perl, there are both operators as well (|| and 'or'). However, they are *not* exactly the same. Although they can be used in any context to render a boolean expression, their priority makes the difference. Taken from official documentation (http://bit.ly/dgw4GT):


Low precedence "and", "or", "xor" were introduced to permit "Perl poetry", or, more seriously, to
permit control flow using a logical expression, especially after function calls without parentheses.
   see Naples or die;  # same as: see(Napes) || die(); but not: see(Naples || die() );

No way this makes any sense in Drools.

-W

Binary "or" returns the logical disjunction of the two surrounding expressions. It's equivalent to || except for the very low precedence. This makes it useful for control flow.

Nonetheless, it must be taken into account that the distinction makes sense for a Perl programmer. For a rules-writing guy (or girl) perhaps the distinction is extremely obscure.

Regards.



_______________________________________________
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




--
Michael D Neale
home: www.michaelneale.net
blog: michaelneale.blogspot.com
_______________________________________________ rules-dev mailing list rules-dev@lists.jboss.org https://lists.jboss.org/mailman/listinfo/rules-dev