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.ans...@gmail.com <mailto:michael.ans...@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.s...@gmail.com
<mailto:ge0ffrey.s...@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 <mailto:rules-dev@lists.jboss.org>
https://lists.jboss.org/mailman/listinfo/rules-dev
_______________________________________________
rules-dev mailing list
rules-dev@lists.jboss.org <mailto: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