我在 elisp 中定义了一个函数来查找向量中列表的索引:
(defun vposition (e v)
(letrec
((f (lambda (e v i)
(if (equal e (elt v i))
i
(f e v (+ i 1))))))
(f e v 0)))
如果我在数字上使用它很好,但是对于字符串,例如(vposition "bar" ["foo" "bar" "thing"])
,我得到一个错误:
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p "bar")
=("bar" "foo")
如果我这样做,比如说,(vposition 3 [1 2 3])
它会按预期(equal "bar" "foo")
工作,并且也可以工作,所以我无法确定问题出在哪里。我错过了什么?