Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Common lisp 如何编写lisp函数来使用谓词_Common Lisp - Fatal编程技术网

Common lisp 如何编写lisp函数来使用谓词

Common lisp 如何编写lisp函数来使用谓词,common-lisp,Common Lisp,例如,我应该在这里输入的是finfirst#'oddp'(1 2 3),它应该找到返回列表的第一个奇数,所以我想我需要做的是编写一个函数,它只有一个参数是list,但我只知道找到列表中的第一个元素,那么我如何在代码中使用该条件呢 (defun finfirst(list)(cond((null list) nil) 如果我完成了,它会告诉我,我需要两个参数,我只是不知道我应该为这个函数做什么,给我一些提示,如果你只是想要你描述的功能,你可以使用函数find if,例如: (find-if #

例如,我应该在这里输入的是finfirst#'oddp'(1 2 3),它应该找到返回列表的第一个奇数,所以我想我需要做的是编写一个函数,它只有一个参数是list,但我只知道找到列表中的第一个元素,那么我如何在代码中使用该条件呢

 (defun finfirst(list)(cond((null list) nil)

如果我完成了,它会告诉我,我需要两个参数,我只是不知道我应该为这个函数做什么,给我一些提示,如果你只是想要你描述的功能,你可以使用函数find if,例如:

(find-if #'oddp '(1 2 3))
如果您想自己实现它,您可以这样做:

(defun finfirst (function list)
  (cond
    ((null list) nil)
    ((funcall function (first list)) (first list))
    (t (finfirst function (rest list)))))
(finfirst #'oddp '(1 2 3))
然后像这样使用它:

(defun finfirst (function list)
  (cond
    ((null list) nil)
    ((funcall function (first list)) (first list))
    (t (finfirst function (rest list)))))
(finfirst #'oddp '(1 2 3))

你有什么问题吗?是否将更多参数添加到参数列表?使用变量绑定函数?请编辑您的问题,更准确地描述您的问题。它告诉我在列表中找到满足列表中谓词的第一个元素,或者如果列表为空,则返回nil,但我不知道如何在代码中设置谓词?例如,
(defun测试元素(谓词元素)(funcall谓词元素))(测试元素#'oddp1);=>t
是的,我想可能是这样,但它应该像(finfirst#'odd(1 2 3))意味着找到第一个奇数元素将返回1,并且它将有另一个极限条件,如(finfirst#'characterp'(1 2 3 4#\a)它将返回其他内容Yes,但如果将元素绑定到变量
元素
,则可以轻松地将其从返回谓词结果更改为传递给参数的元素?您知道,使用
if