lisp - 一个简单的 lisp 函数

标签 lisp

我写了一个测试函数来测试我对 Lisp 中“return-from”的理解

(defun testp (lst)
  (mapc #'(lambda (x y)
            (if (null lst)
                (return-from testp t)))
        lst
        (cdr lst)))

我认为测试 (testp 'nil) 应该返回 T,但它返回 NIL。 您能帮助我理解为什么它返回 NIL 吗?

非常感谢。

最佳答案

您通过两个空列表调用 MAPC。

如果列表没有任何要映射的元素,应该如何使用 LAMBDA 函数?

顺便说一句,你可以写“list”而不是“lst”。

(defun testp (list)
  (mapc #'(lambda (x y)
            (if (null list)
                (return-from testp t)))
        list
        (cdr list)))

关于lisp - 一个简单的 lisp 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1841053/

相关文章:

Lisp:找到与 fset 等效的 setf 方法

database - 处理大型结构化数据集

scheme - 是否有与 SBCL 的运行程序等效的方案?

lisp - 如何避免 NIL 被添加到列表中?

lisp - 如何在 Racket 中将 sql-timestamp 转换为字符串?

lisp - 我可以用 SICP 讲座笔记代替 SICP 讲座视频吗?

list - Lisp 循环列表

multithreading - 使用 lisp 实现计算器程序

haskell - 惰性求值与宏

reflection - 引用、具体化和反射(reflection)的关系