相关疑难解决方法(0)

如何将"或"应用于elisp中的列表

在elisp我可以评估或作为一个函数就像+.

(or nil 0 nil) ==> 0

(+ 1 0 1) ==> 2
Run Code Online (Sandbox Code Playgroud)

我可以使用apply来将+应用到列表中

(apply '+ '(1 0 1)) ==> 2
Run Code Online (Sandbox Code Playgroud)

所以,我会想或者会以同样的方式工作,但事实并非如此.

(apply 'or '(nil 0 nil)) ==> error: (invalid-function or)
Run Code Online (Sandbox Code Playgroud)

我想这是来自用于实现短路评估的一些内部魔术.如何使用apply对列表执行或操作?


PS我想要的应用程序是找出命令行上的任何元素是否与特定模式匹配,所以我写的重要部分是:

(apply 'or (mapcar (lambda (x) (string-match-p "pattern" x)) command-line-args))
Run Code Online (Sandbox Code Playgroud)

但它不起作用

lisp elisp

21
推荐指数
2
解决办法
2801
查看次数

在Scheme中使用AND和apply函数

以下为什么不工作?

(apply and (list #t #t #f))
Run Code Online (Sandbox Code Playgroud)

虽然以下工作正常.

(apply + (list 1 3 2))
Run Code Online (Sandbox Code Playgroud)

这似乎是R5RS和R6RS的情况?

scheme

13
推荐指数
3
解决办法
8468
查看次数

标签 统计

elisp ×1

lisp ×1

scheme ×1