У меня возникла проблема с записью функции LISP. Функция определяется какс использованием COND по необязательным аргументам в общем lisp
(defun foo (arg1 &optional cont))
(cond ((null arg1) nil)
((= 0 cont) arg1)
((do_something))
((recursive call))))
Когда я вызвать функцию с cont
все работает отлично, но когда я называю это только с arg1 ошибки возвращаемые:
Error: in ZEROP of (NIL) arguments should be of type NUMBER
Я предполагаю, что-то не так в условие ((= 0 cont) arg1)
, вы можете помочь мне решить эту проблему? Thanks
Если вы хотите узнать, предоставлен ли дополнительный аргумент, вы можете сделать это: '(defun foo (arg1 & optional (cont nil contp))' ... например – tfb
Кстати, сообщение об ошибке, похоже, указывает на то, что вызов '=' был заменен вызовом 'zerop' компилятором. –