我正在尝试使Common Lisp中的MEMBER函数起作用。 所以,我想使这个函数的工作是这样的:如何在Common Lisp中使用DO宏编写MEMBER函数?
(my-member 2 '(1 4 5 5 3 2 5 6 9))
=> (2 5 6 9)
这是因为成员函数的工作原理完全一样;
(member 2 '(1 4 5 5 3 2 5 6 9))
=> (2 5 6 9)
条件是我应该使用'DO'宏来做这个功能。 这是我的,我已经写尽此功能代码:
(defun my-member (item x)
"This function works like MEMBER function."
(do ((z x (rest z))
(e (first x) (first z)))
(:when (equal item (first z))
(return z))))
但我应该怎么做才能解决这个问题,这是行不通的..
(my-member 2 '(3 4 5 2 1 1))
-> (3 4 5 2 1 1)
?
会员不是Lisp中的宏。 –
什么是':什么时候? –
哎呀,对不起。 MEMBER是Lisp中的一个内置函数! – starrykss