Как я могу иметь необязательные аргументы И аргументы ключевого слова для одной и той же функции?

Я пытаюсь написать функцию Lisp, которая может принимать необязательные аргументы и аргументы ключевого слова. Функция начинается с

(defun max-min (v &optional max min &keyword (start 0) (end nil))

Когда я пытаюсь вызвать функцию, используя аргументы ключевого слова, но не дополнительные, я получаю сообщение об ошибке. Я пытаюсь сделать следующее:

(max-min #(1 2 3 4) :start 1 :end 2)

Я получаю сообщение об ошибке Ошибка: : START 'не соответствует ожидаемому типу REAL'

Я предполагаю, что это потому, что он пытается привязать : start к max . Как я могу заставить это работать? Спасибо.

5
задан Daniel 13 November 2011 в 02:53
поделиться