好吧,我最近开始学习lisp,做一个小程序,我发现了一个小问题.问题是编写一个函数,如果一个名称还没有名称,就会为其添加标题.我的代码是:
(setf *man-names* '(carlos pablo dani sergio))
(setf *woman-names* '(eva alba luna laura))
(defun titledp (name)
(cond ((member (car name) *man-names*) nil)
((member (car name) *woman-names*) nil)
(t t)))
(defun add-title (name)
(cond ((member (car name) *man-names*) (cons 'Mr. name))
((member (car name) *woman-names*) (cons 'Mrs. name))))
(defun title (name)
(cond ((titledp (name)) name)
(t add-title (name))))
Run Code Online (Sandbox Code Playgroud)
当在'add-title'中调用cons时,我遇到了一个问题,即没有定义函数'name'.为什么会这样?我该怎么解决?
谢谢 :)
你的括号很有趣.在您的title功能中,您使用(name)了几次.这意味着调用name没有参数调用的函数.我想这就是你想要的:
(defun title (name)
(cond ((titledp name) name)
(t (add-title name))))
Run Code Online (Sandbox Code Playgroud)