case - casq

Sergey ShishkinSergey Shishkin
1 min read

Пропустил эту пару символов, хотя по алфавиту в списке они рядом, но “лексический параметр“ сразу не сработал по “внешним признакам“, только когда стал смотреть “внутренние потроха“.

(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

https://picolisp.tiddlyhost.com/#case

0
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

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