Рассмотрим примеры:
(mapcar (lambda (x)
(case x
(1 :one)
(2 :two)
(3 :three)))
(list 0 1 2 3 4 5))
(mapcar (lambda (x)
(typecase x
(number :number)
(string :string)
(symbol x)))
(list :foo 1 :bar 2 "baz" 3))
Видно, что (lambda (x) (case x ...)) и (lambda (x) (typecase x ...) — шаблонный код. Попробуем избавиться от него.
Читать полностью »