2012-07-13 55 views
0

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

;;;这是列表 (setf lst'(a b c d e 1 2 3 4 5))

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

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

当我把输入 - >(清单1 LST),它返回数...但是,当我输入字母,它返回我的错误。 ..任何人都可以帮我指出出了什么问题?提前致谢 。

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

当我输入 - >(question5 a lst)

它给我这样的错误。

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

+0

只是告诉我们错误是如何发生的。 – 2012-07-13 07:26:05

+0

我已经把上面的错误.. – Eric 2012-07-13 07:29:00

+0

埃里克:'a'是一个变量。你需要引用它,所以它保持一个符号,并没有得到评估。 – 2012-07-13 07:29:58

回答

2

这是作业吗?

如果是:

我不认为member是对您有用。如果你想做一个迭代解决方案,那么你会使用类似DODOLIST

如果没有:

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程序设计的基本知识。

+0

雅是一个家庭作业..我和我的朋友困惑了很长时间,所以问在那里..如果要实施做或dolist,如何实现它?我还没有得知,但.. – Eric 2012-07-13 07:34:30

+0

好的。感谢您的建议和帮助..我会去和Lok那..谢谢.. – Eric 2012-07-13 07:40:36

相关问题