- From: Sandro Hawke <sandro@w3.org>
- Date: Tue, 05 May 2009 16:41:54 -0400
- To: public-rif-wg@w3.org
I think the DTB section on RIF lists [1] is now ready for review for
Last Call. A few notes and questions:
* I removed the func:delete function, because
(a) it's not in xpath,
(b) it's confusingly similar to func:remove, and
(c) it's trivial emulated:
func:delete(L, I) = func:except(L, func:make-list(I))
Some other functions are trivial emulated, but they're in xpath. I
think the bar is higher for us adding functions. This way, the
only ones we're adding are is-list, list-contains, make-list, and
get. list-contains is that only the can be emulated:
list-contains(L, I) iff count(index-of(L, I)) > 0
but I think we specifically discussed that and agreed it was
worthwhile to have list-contains.
Obviously, if someone actually wants it, I'm okay with putting
func:delete back in.
* This section has examples. I could trivially suppress them for now
(this wiki-text is generated by a program [2]), if they bother
people. I like them. They have all been checked by my demo code
[3]. I'm willing to make similar examples for the rest of DTB for
a later edition.
* I don't know the right binding pattern for list-contains. Above, I
was assuming it was (b,b), but I can imagine some utility to all
binding patterns, and at least (b,u) seems pretty reasonable. It's
not clear to me whether PR systems would do what I'm imagining with
that, but it'd be nice to write rules like:
forall M (
if list-contains(eg:list_of_friends, M)
then eg:is_friend(M)
)
Without it, I guess you'd need some much more cumbersome
tail-recursive rules like this:
friend_list(eg:list_of_friends)
forall L M (
if friend_list(L) and
get(L, 0) = M
then eg:is_friend(M)
)
forall L (
if friend_list(L) and
count(L) > 0
then friend_list(sublist(L, 1))
)
PR folks, what do you want, there?
I think that it. This complete ACTION-760.
-- Sandro
[1] http://www.w3.org/2005/rules/wiki/DTB#Functions_and_Predicates_on_RIF_Lists
[2] http://dev.w3.org/cvsweb/2009/rif/list_builtins.py
Received on Tuesday, 5 May 2009 20:42:04 UTC