Вам нужно вызвать эту функцию с обязательным параметром, необязательными параметрами, а затем с параметрами ключевого слова. Как это должно работать иначе? В вашем звонке отсутствуют дополнительные параметры. Если вы хотите указать параметры ключевого слова в вызове, необязательные больше не являются необязательными.
(max-min #(1 2 3 4) 0 100 :start 1 :end 2)
Основное правило стиля:
Не смешивайте опционально с параметрами ключевых слов в функции. Например, Common Lisp использует его где-то, и это является источником ошибок.
CL:READ-FROM-STRING
является таким примером.
read-from-string string
&optional eof-error-p eof-value
&key start end preserve-whitespace
http://www.lispworks.com/documentation/HyperSpec/Body/f_rd_fro.htm
Это работает:
(read-from-string " 1 3 5" t nil :start 2)
Это может также работать:
(read-from-string " 1 3 5" :start 2)
Но пользователь забыл указать EOF-ERROR-P и EOF-VALUE. Компилятор Lisp может не жаловаться, и пользователю будет интересно, почему он не запускается в 2.