Paul Graham 的“On Lisp”勘误页指出:
页。23. 如果没有元素匹配,our-find-if 将无限递归。被马库斯·特里斯卡抓住。
书中所示的函数定义为:
(defun our-find-if (fn lst)
(if (funcall fn (car lst))
(car lst)
(our-find-if fn (cdr lst))))
这是我可能很糟糕的解决方法:
(defun our-find-if (fn lst)
(if (funcall fn (car lst))
(car lst)
(if (cdr lst)
(our-find-if fn (cdr lst))
nil)))
这个对吗?我的 'our-find-if' 版本仍然是尾递归的吗?(我认同...)
欢迎更好的选择。
TIA