不使用MEMBER,请完成以下递归函数POS的定义,例如如果L是一个列表并且E是L的元素,则(POS E L)返回第一个的位置在L中出现E,但是如果L是一个列表并且E不是L的元素,则(POS E L)返回0。
(DEFUN POS (E L) (COND ((ENDP L) ... ) ((EQUAL E (CAR L)) ... ) (T (LET ((X (POS E (CDR L)))) ))))
这是我的代码
(defun pos (E L) (cond ((endp L) 0) ((equal e (car L)) 1) (T (let ((x (pos E (cdr L)))) (if (zerop x) x (+ x 1)))))
我尝试用]测试条件>
(POS '(A B) '((K) (3 R C) A (A B) (K L L) (A B))) => 4
但是它给我答案4并抛出错误***-
读取##>:对象不能以#\开头
我不知道什么是#\
[不使用MEMBER,完成以下递归函数POS的定义,使得如果L是列表,而E是L的元素,那么(POS EL)返回E的首次出现的位置...
(defun pos (el l &optional (acc 1))
(cond ((null l) 0)
((equal el (car l)) acc)
(t (pos el (cdr l) (1+ acc)))))