LISP 处理讨厌的 NIL

标签 lisp null

我有以下过滤函数,可以过滤掉不满足函数 f 的列表 x。

例如,我调用 (filter 'evenp '(0 1 2 3)) 并返回 (NIL 1 NIL 3)。但这正是我的问题。我该如何才能返回 (1 3)

(defun filter (f x)
    (setq h (mapcar #'(lambda (x1)
                        (funcall f x1))
                    x))
    (mapcar #'(lambda (a b)
                (cond ((null a) b)))
            h x))

即问题就在这里: (lambda (a b) (cond ( (null a) b) ) ) 在我的 cond 中,我没有 t 或 else 语句,那么它不应该就停在那里而不返回 nil 吗?如果 (cond ( (null a) b) ) 不满足,如何让它“返回”任何内容,甚至不返回 nil ?

非常感谢。 :)

最佳答案

基于this question它将是:

(remove-if #'evenp '(0 1 2 3))

关于LISP 处理讨厌的 NIL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9371636/

相关文章:

loops - 从循环内的格式返回

linux - 如何在终端 lisp 方案解释​​器中导航文本?

java - 多个 NULL 添加到 Java 中的列表中

android - Android编程中空值逻辑: Confused

Python - Pandas 导出到 csv 或 dat 文件删除无或 numpy.nan

LISP 修改列表作为参数传递

list - 在 Lisp 中替换列表小节的最惯用方法

shell - Emacs 口齿不清 : is it possible (using lisp) to run command in an eshell working in other buffer?

mysql - 为什么 "<> Null"的行为与 “IS NOT NULL” 不同?

java - 为什么在空引用上调用(静态)方法不会抛出 NullPointerException?