Что такое &optional? - Lisp

Формулировка задачи:

Можете объяснить? Вот пример:
(defun subdepth (item mlist &optional (mdepth 0)) (cond((null mlist) nil) ((eql item mlist) mdepth) ((atom mlist) mlist) (t (cons (subdepth item (car mlist) (+ 1 mdepth)) (subdepth item (cdr mlist) mdepth)))))

Код к задаче: «Что такое &optional? - Lisp»

textual
(defun sub-depth (item mlist &optional (mdepth 0))
  (cond((null mlist) nil)
       ((eql item mlist) mdepth)
       ((atom mlist) mlist)
       (t (cons (sub-depth item (car mlist) (+ 1 mdepth))
                (sub-depth item (cdr mlist) mdepth)))))
 
> (sub-depth 'c '(a (b (c) d) e))
(A (B (3) D) E)

6   голосов, оценка 4.333 из 5


СОХРАНИТЬ ССЫЛКУ