2012-06-24 3 views

ответ

2

Вот два способа сделать это. Вы могли бы сделать одну гильзы, построив вызов функции в виде строки и делают синтаксический анализ повторно разобрать его:

(deffunction sumAll($?args) 
    (eval (str-cat "(+ " (implode$ ?args) ")"))) 

Или вы могли бы сделать итерации в явном виде.

(deffunction sumAll($?args) 
    (bind ?sum 0) 
    (foreach ?num ?args 
     (bind ?sum (+ ?sum ?num)))) 

Второй, вероятно, будет более эффективным.

 Смежные вопросы

  • Нет связанных вопросов^_^