Опциональный параметр у функции с значением по умолчанию
(defun multiply-then-maybe-add (x y &optional (z 0) )
(+ (* x y) z))
Именованные параметры у функции
(defun first-n-chars (string n
&key reverse-first nil by default
(capitalize-first t) )
;...
)
(first-n-chars "hello world" 5 :reverse-first t)
(defun foo (a b
&optional (c 'c) d
&rest keys
&key (e 'e) ((:x f) 0 f-present-p) g
&allow-other-keys)
(list a b c d e (list f f-present-p) g keys))
(foo 0 1 2 3 :g 4 :x 5 :z 123)
(0 1 2 3 E (5 T) 4 (:G 4 :X 5 :Z 123))
Источники:
- 1-2 - www.cs.gmu.edu
- 3 - love5an.livejournal.com