case - casq

Пропустил эту пару символов, хотя по алфавиту в списке они рядом, но “лексический параметр“ сразу не сработал по “внешним признакам“, только когда стал смотреть “внутренние потроха“.
(case 'any (any1 . prg1) (any2 . prg2) ..) -> any
(casq 'any (any1 . prg1) (any2 . prg2) ..) -> any
“Найдите десять отличий“ … И если читать комментарии (описание “функций“), то и там и там:
“Многоканальный переход: any
оценивается и сравнивается с элементами CAR anyN
каждого предложения … Если один из них является списком, any
в свою очередь сравнивается со всеми элементами этого списка. T
является универсальным для любого значения. Если сравнение успешно, prgN
выполняется, и возвращается результат. В противном случае возвращается NIL
.“
Разница там, где многоточие и для второго варианта есть уточнение: “Для сравнения (равенство указателей) используется ==
.“
А что в примерах.
: (case (char 66) ("A" (+ 1 2 3)) (("B" "C") "Bambi") ("D" (* 1 2 3)))
-> "Bambi"
: (case 'b (a 1) ("b" 2) (b 3) (c 4))
-> 2
: (casq 'b (a 1) ("b" 2) (b 3) (c 4))
-> 3
: (casq 'b (a 1) ("b" 2) ((a b c) 3) (c 4))
-> 3
Subscribe to my newsletter
Read articles from Sergey Shishkin directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by

Sergey Shishkin
Sergey Shishkin
Всегда чему-то учусь!