【发布时间】:2020-01-27 12:25:54
【问题描述】:
我对 LISP 有点陌生,我试图用只有 mapcar 和 lambda 函数来创建一个“用列表 l 中的 y 替换 x 的每个出现”函数。
我猜想 lambda 函数会检查条目是否等于“x”并将其替换为“y”。 但是lamba函数似乎不接受IF或cond语句,有什么合适的方法吗?
(defun remplacee(x y l)
(mapcar #'(lambda(c)((IF (EQ c x) y x))) l)
)
感谢阅读。
【问题讨论】:
-
你有一个额外的层括号(如果...)。错了。
-
除非您真的想按身份比较对象,否则不要使用 EQ(注意,= 的数字不一定相同,请参阅lispworks.com/documentation/HyperSpec/Body/f_eq.htm)
标签: functional-programming lisp common-lisp