开发者

Problem with cons function

开发者 https://www.devze.com 2023-02-22 08:19 出处:网络
Well, I started recently to learn lisp, and doing a small program I\'ve found a little problem. The problem is to write a function that adds a title to a name if it doesn\'t already have one. My code

Well, I started recently to learn lisp, and doing a small program I've found a little problem. The problem is to write a function that adds a title to a name if it doesn't already have one. My code is:

(setf *man-names* '(carlos pablo dani sergio))
(setf *woman-names* '(eva alba luna laura开发者_如何学JAVA))

(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))))

When, in 'add-title', cons is called I get a problem that says the function 'name' isn't defined. Why does that happen? how can I fix it?

Thank you :)


Your parentheses are funny. In your title function, you use (name) a couple of times. That means to call the function called name with no arguments. I think this is what you want:

(defun title (name)
    (cond ((titledp name) name)
          (t (add-title name))))


Since you are expecting a list for your name value, you need to submit a list. Thus, (add-title '(carlos)) or (add-title (list 'carlos)) will work.

0

精彩评论

暂无评论...
验证码 换一张
取 消