实现每一个,一些在Lisp中

时间:2017-05-03 03:09:57

标签: lisp common-lisp

所以,基本上我有一个Lisp编程功课。允许这些操作:quote('),car,cdr (cadadr等),第一,第二(第三等),休息,缺点,列表,追加,长度,numberp,listp,atom,symbolp, oddp,evenp,null,not,and,or,cond,equal,defun,let,let *,=,+, - ,*,/

但是,在某些时候我需要这些操作:
- (每个功能列表)
如果函数对于列表的每个元素都为真,则为真 - (某些功能列表)
如果函数对于列表的某个元素为真(非NIL),则为真;返回第一个非NIL值 这些函数在Lisp中,但我不允许使用它们。

是否有一些方法可以实现"每个"和#34;一些"以上操作?
编辑:我猜,它应该是这样的:

(defun every (fun list)
      (and (fun (car list))
           (every fun (cdr list))))  
(defun some (fun list)
      (or (fun (car list))
           (every fun (cdr list)))) 

让"未定义的功能FUN"错误。所以棘手的部分是运行FUN函数。

0 个答案:

没有答案