gpt4 book ai didi

lisp - 任何人都可以帮助编写一个 lisp 代码来找到满足列表中谓词的第一个元素

转载 作者:太空宇宙 更新时间:2023-11-03 19:04:26 24 4
gpt4 key购买 nike

任何人都可以帮助我编写通用的 lisp 代码吗?如下:创建一个 find first predicate 列表函数,返回第一个满足列表中给定条件的元素,如果没有元素可以满足,则返回 nil。

(find-first #'oddp '(1 2 3)) returns 1.
(find-first #'characterp '(1 2 3 4 5 6 #\a))

最佳答案

递归地:

(defun find-first (fn ls)
(cond ((null ls) nil)
((funcall fn (car ls)) (car ls))
(t (find-first fn (cdr ls)))))

迭代使用loop宏:

(defun find-first (fn ls)
(loop for item in ls
if (funcall fn item)
return item))

通过映射:

mapc 明确用于其副作用。

(defun find-first (fn ls)
(mapc (lambda (item)
(if (funcall fn item)
(return-from find-first item)))
ls))

功能上:

(defun find-first (fn ls)
(car (remove-if-not fn ls)))

最后;很直接。使用 CL 标准函数 find-if:

find-first 实际上只是 find-if 的别名。

(defun find-first (fn ls)
(find-if fn ls))

关于lisp - 任何人都可以帮助编写一个 lisp 代码来找到满足列表中谓词的第一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46517749/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com