1

我想做一个迭代函数来计算元素 el 是否是列表的成员并返回一个原子。

;;; 这是列表 (setf lst '(abcde 1 2 3 4 5))

;;;这是检查它是否是列表成员的函数。

(defun checklist (a lst)
           (if (member a alist)
               a))

当我输入 -> (checklist 1 lst) 时,它返回数字......但是当我输入字母时,它返回错误。..任何人都可以帮我说明问题是什么?提前致谢 。

==================================================== ===============================

当我输入->(问题5 a lst)

它给了我这样的错误。

CG-USER(7): (question5 a lst) 错误:尝试获取未绑定变量“A”的值。[条件类型:UNBOUND-VARIABLE]

4

1 回答 1

3

那是家庭作业吗?

如是:

我不认为member对你有用。如果你想做一个迭代解决方案,那么你会使用类似DOor的东西DOLIST

如果不:

Common Lisp 有一个函数可以按顺序查找元素(列表、向量、字符串...)FIND:.

补充:使用(question5 'a lst)

另请注意,您的定义有一个不幸的部分:

(checklist nil '(a b c))

(checklist nil '(a b c nil))

两者都会返回NIL

顺便说一句,Touretzky 的 Lisp 介绍书可免费下载: http ://www.cs.cmu.edu/~dst/LispBook/ 这本书很好地介绍了 Lisp 编程的基础知识。

于 2012-07-13T07:29:09.933 回答