[rules-dev] Hilog support for query literals
Mark Proctor
mproctor at codehaus.org
Sun Aug 7 02:06:11 EDT 2011
Hilog supports something called "generic programs". You can think of
these as query literals you can pass around and call, bit like function
literals.
Because Hilog is untyped it uses a separate parenthesis to allow query
literals to be passed:
http://www.cs.sunysb.edu/~warren/xsbbook/node46.html
"... snip ....
closure(R)(X,Y) :- R(X,Y).
closure(R)(X,Y) :- R(X,Z), closure(R)(Z,Y).
Now given any binary relation, one can use use this definition to
compute its closure. For example, we can define a binary predicate,
|parent| as follows:
:- hilog parent.
parent(able,adam).
parent(able,eve).
parent(cain,adam).
parent(cain,eve).
etc
and then we can use the generic definition of closure to find anscestors:
| ?- clo
... snip ...."
We could supprt this if we added generics to our query literals, probably something like:
query closure( Query<String, String> q, String x, String y )
q( x, y )
or
( q( x, z ) and q(z, y) )
end
Anyway something worth thinking on, when we start to look at function literal support in Drools, we should probably address the two at the same time.
Mark
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/rules-dev/attachments/20110807/8eace689/attachment.html
More information about the rules-dev
mailing list