Your defadvice call is assuming that $?argv is supposed to contain
just the parameters to the function, but actually it's the entire
function call. The description in the manual is actually quite
ambiguous so I will fix the wording. In any event, your defadvice
works fine with the addition of the atom "format" immediately after
"create$".
I think Thomas Gentsch wrote:
>
> Another question ... :~)
>
> In CLIPS there is a feature which expands multifield variables into
> single function parameters. The following example illustrates that best:
>
> (bind ?m (create$ a b c))
> (format t "1: %s 2: %s 3: %s\n" $?m)
>
> i.e. by specifying the $ the multifield will be expanded.
> Basically that equals (nth$ 1 ?m) (nth$ 2 ?m) (nth$ 3 ?m) in that case
> but much simpler. Is there any way to do that in Jess?
>
> Btw. I experimented with the (defadvice ) and tried this:
> (defadvice before format (bind $?argv (create$ t "1: %s 2: %s 3: %s\n"
> $?m)))
> (format)
> (undefadvice format)
>
> but that ignored for some reason the 't' (or nil or whatever I
> specified) and complained:
> Message: Bad router 1: %s 2: %s 3: %s
>
> Or
> (defadvice before format (bind $?argv (create$ $?argv)))
> (format t "1: %s 2: %s 3: %s\n" $?m)
> (undefadvice format)
> results in
> Message: Not a string: "a b c" (type = LIST).
>
> which is the same error as if I call the function as on the very top
> (which is OK assuming that the multifield does not get expanded).
>
> I also tried all variations I could think of but couldn't get it to
> work. Any advice :~) ??
>
> Thanks a lot,
> tge
>
> --
> Thomas Gentsch
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
> in the BODY of a message to [EMAIL PROTECTED], NOT to the
> list (use your own address!) List problems? Notify [EMAIL PROTECTED]
> ---------------------------------------------------------------------
>
---------------------------------------------------------
Ernest Friedman-Hill
Distributed Systems Research Phone: (925) 294-2154
Sandia National Labs FAX: (925) 294-2234
Org. 8920, MS 9012 [EMAIL PROTECTED]
PO Box 969 http://herzberg.ca.sandia.gov
Livermore, CA 94550
---------------------------------------------------------------------
To unsubscribe, send the words 'unsubscribe jess-users [EMAIL PROTECTED]'
in the BODY of a message to [EMAIL PROTECTED], NOT to the
list (use your own address!) List problems? Notify [EMAIL PROTECTED]
---------------------------------------------------------------------