Wolfgang Laun
Mon, 16 Nov 2009 04:00:17 -0800
As a workaround, you can use a lambda for smuggling the list into the query:
(bind ?eq-pqr (lambda (?arg) (return (eq (list p q r) ?arg))) ) (defquery q1 (declare (variables ?pa ?lam)) (myfact (a ?pa) (b ?b) (c $?v &:(?lam $?v)) ) ) -W On Fri, Nov 13, 2009 at 7:04 PM, Ernest Friedman-Hill <ejfr...@sandia.gov>wrote: > Hmmm. Indeed, you're right, and it's a limitation of the implementation, > not easily lifted. I'll add it to the issues list. > > > > On Nov 13, 2009, at 12:20 PM, Michael Welter wrote: > > Can't a list be passed to defquery? >> >> (deftemplate myfact >> (slot a) >> (slot b) >> (multislot c) >> ) >> >> (deffacts f1 >> (myfact (a 1)(b 1)(c (create$ p q c))) >> (myfact (a 1)(b 2)(c (create$ p q r))) >> (myfact (a 1)(b 3)(c (create$ p q z))) >> ) >> >> (defquery q1 >> (declare (variables ?pa ?pc)) ; $?pc throws an error >> (myfact >> (a ?pa) >> (b ?b) >> (c $?v&:(eq $?v $?pc)) ; won't work >> ;(c $?v&:(eq (nth$ 1 $?v) ?pc)) ; works >> ) >> ) >> >> (defrule r1 >> (initial-fact) >> => >> (try >> (bind ?result (run-query* q1 1 (create$ p q r))) >> catch >> (printout t "query failed" crlf) >> ) >> (while (?result next) do >> (printout t >> "b: " (?result getString b) >> crlf) >> ) >> ) >> >> >> Thanks >> >> >> -------------------------------------------------------------------- >> To unsubscribe, send the words 'unsubscribe jess-users y...@address.com' >> in the BODY of a message to majord...@sandia.gov, NOT to the list >> (use your own address!) List problems? Notify owner-jess-us...@sandia.gov >> . >> -------------------------------------------------------------------- >> > > --------------------------------------------------------- > Ernest Friedman-Hill > Informatics & Decision Sciences Phone: (925) 294-2154 > Sandia National Labs > PO Box 969, MS 9012 ejfr...@sandia.gov > Livermore, CA 94550 http://www.jessrules.com > > > > > > > -------------------------------------------------------------------- > To unsubscribe, send the words 'unsubscribe jess-users y...@address.com' > in the BODY of a message to majord...@sandia.gov, NOT to the list > (use your own address!) List problems? Notify owner-jess-us...@sandia.gov. > -------------------------------------------------------------------- > >