В elisp я могу оценить или как функцию, как +.
(or nil 0 nil) ==> 0
(+ 1 0 1) ==> 2
Я могу использовать apply для применения + к списку
(apply '+ '(1 0 1)) ==> 2
Итак, я бы подумал или будет работать одинаково, но это не так.
(apply 'or '(nil 0 nil)) ==> error: (invalid-function or)
Я предполагаю, что это происходит от некоторой внутренней магии, используемой для реализации оценки короткого замыкания. Как я могу использовать apply для выполнения операции или операции над списком?
P.S. мое желаемое приложение - выяснить, соответствуют ли какие-либо элементы в командной строке конкретному шаблону, поэтому важной частью того, что я пишу, является:
(apply 'or (mapcar (lambda (x) (string-match-p "pattern" x)) command-line-args))
Но это не работает