My personally opinion is to keep the language simple and instead have the tooling inject what ever is necessary as a visulation. Be it different colouring, hover over or graphic symbol. It keeps the language simple and actually achieve the desired result better.

Mark
On 20/04/2011 14:00, Leonardo Gomes wrote:
+1 for Michael's suggestion.

It's a bit more verbose, but makes things clear.

The semicolon here:
?
editableThings(food : ?, loc;)

Is a typo, right? You actually meant:

?editableThings(food : ?, loc);

- Leo.



On Wed, Apr 20, 2011 at 11:59 AM, Michael Anstis <michael.anstis@gmail.com> wrote:
Hmmmmm....

Personally, I don't like the use of ":" i isolation as it's what we currently use to bind variables and I feel "cheese:" as an output definition could just make people question whether they've missed something. Perhaps "cheese : ?" would be a viable alternative. This would be in keeping with (a) current variable declaration, (b) the use of "?" to identify a call to a query. Geoffrey's examples would then become:-


rule outputinput
when
    Here( loc : location)
    ?editableThings(food : ?, loc;)
then
    System.out.println("Food " + food + " at location " + loc);

    // Output:
    // Food crackers at location kitchen
    // Food apple at location kitchen
end

rule outputOutput
when
    ?editableThings(food : ?, loc : ?;)
then
    System.out.println("Food " + food + " at location " + loc);

    // Output:
    // Food crackers at location kitchen
    // Food apple at location kitchen
    // Food chocolate at location living room
    // Food chips at location living room
end

rule typo
when
    Here( looc : location)
    ?editableThings(food : ?, loc : ?;)
then
    System.out.println("Food " + food + " at location " + loc);

    // Output:
    // Food crackers at location kitchen
    // Food apple at location kitchen
    // Food chocolate at location living room
    // Food chips at location living room
    // looc is just an unused bound variable
end


On 20 April 2011 10:16, Geoffrey De Smet <ge0ffrey.spam@gmail.com> wrote:
Mark and I were discussing backwards chaining
  http://blog.athico.com/2011/04/backward-chaining-emerges-in-drools.html
on IRC and we 'd like your opinion on a design issue.

The example
========

Let's say you have this data:
  Location("crackers", "kitchen")
  Location("apple", "kitchen")
  Location("chocolate", "living room")
  Location("chips", "living room")

Let's say you have this code:

query editableThings( String thing, String location )
    Location(thing, location)
end

And then these 3 rules:

rule outputinput
when
    Here( loc : location)
    ?editableThings(food, loc;)
then
    System.out.println("Food " + f + " at location " + loc);
    // Output:
    // Food crackers at location kitchen
    // Food apple at location kitchen
end

rule outputOutput
when
    ?editableThings(food, loc;)
then
    System.out.println("Food " + f + " at location " + loc);
    // Output:
    // Food crackers at location kitchen
    // Food apple at location kitchen
    // Food chocolate at location living room
    // Food chips at location living room
end

rule typo
when
    Here( looc : location)
    ?editableThings(food, loc;)
then
    System.out.println("Food " + f + " at location " + loc);
    // Output:
    // Food crackers at location kitchen
    // Food apple at location kitchen
    // Food chocolate at location living room
    // Food chips at location living room
end


The discussion
=========

Both rules have the same statement:
  ?editableThings(food, loc;)

In the outputInput rule, "loc" is an input variable.
In the outputOutput rule, "loc" is an output variable.

I am wondering if we don't need a visual demarcation that a variable is an output variable,
to make it stand out of an input variable?

Proposition 1: Suffix output variables with ":"

rule outputinput
when
    Here( loc : location)
    ?editableThings(food:, loc;)
then ... end

rule outputOutput
when
    ?editableThings(food:, loc:;)
then ... end

rule typo
when
    Here( looc : location)
    ?editableThings(food:, loc;) // compiler error because input variable loc is not declared
then ... end


--
With kind regards,
Geoffrey De Smet

_______________________________________________
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


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