If you call apply with str-cat outside of a function, the result is what you would expect: a single string that is the argument strings concatenated.
Jess> (apply str-cat “foo” “ bar” “ baz”)
“foo bar baz”
If you declare a function that performs the concatenation on its single multifield argument, the result of the apply inside the function is a string with the original quotes preserved:
Jess> (deffunction test ($?args) (apply str-cat ?args))
Jess> (test "foo" " bar" " baz")
"\"foo\" \" bar\" \" baz\""
To concatenate strings inside a function currently I use a foreach loop:
(bind ?res "")
(foreach ?str ?args (bind ?res (str-cat ?res ?str)))
where ?args is the multifield parameter of the function as above.
Bug? Or am I not understanding something?
Institute for Creative Technologies
University of Southern California
solomon “at” ict.usc.edu
- JESS: Possible bug: using apply with str-cat inside a functi... Steve Solomon