首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >cons函数的问题

cons函数的问题
EN

Stack Overflow用户
提问于 2011-04-07 03:56:39
回答 2查看 150关注 0票数 0

嗯,我最近开始学习lisp,在做一个小程序时,我发现了一个小问题。问题是编写一个函数,如果名称还没有标题,就给它添加一个标题。我的代码是:

代码语言:javascript
复制
(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))))

当在'add-title‘中调用cons时,我得到一个问题,说函数'name’没有定义。为什么会发生这种情况?我怎么才能修复它?

谢谢您:)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-07 04:21:26

你的括号很有趣。在title函数中,您会多次使用(name)。这意味着调用名为name的函数时不带参数。我想这就是你想要的:

代码语言:javascript
复制
(defun title (name)
    (cond ((titledp name) name)
          (t (add-title name))))
票数 6
EN

Stack Overflow用户

发布于 2011-04-07 04:25:03

由于您的name值需要一个列表,因此需要提交一个列表。因此,(add-title '(carlos))或(add-title (list 'carlos))将起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5572235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档