En elisp puedo evaluar o como una función como +.¿Cómo aplico "o" a una lista en elisp
(or nil 0 nil) ==> 0
(+ 1 0 1) ==> 2
puedo usar en Aplicar para aplicar + a una lista
(apply '+ '(1 0 1)) ==> 2
Por lo tanto, yo creo o funcionaría de la misma manera, pero no es así.
(apply 'or '(nil 0 nil)) ==> error: (invalid-function or)
Imagino que esto proviene de alguna magia interna utilizada para implementar la evaluación de cortocircuito. ¿Cómo puedo usar apply para ejecutar la operación o sobre una lista?
P.S. mi aplicación deseada es averiguar si alguno de los elementos de la línea de comandos se ajustan a un patrón particular, por lo que la parte importante de lo que estoy escribiendo es:
(apply 'or (mapcar (lambda (x) (string-match-p "pattern" x)) command-line-args))
Pero no funciona
+1 por ofrecer realmente una solución, algo que olvidé por completo. –
La solución con algunos no se ejecuta. Me sale el error (la función void es algo), lo que quiero decir que algunos no están definidos. – Eponymous
Eponymous: 'some' se define en" cl-extra.el "- es posible que tengas que cargarlo primero. O tal vez estés usando una versión anterior de Emacs. – Ken