Я определил функцию в 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")
работ, тоже, так что я не могу выделить, где проблема. Что мне не хватает?
Действительно тщательный ответ - спасибо! – amindfv