Lisp中的位置函数出错

Lisp中的位置函数出错,lisp,racket,Lisp,Racket,如果我有这样的清单 (1 2 3) 我想找到2的索引,我使用了这个函数 (position '3 '(1 2 3)) 编译时发生此错误 。位置:未定义; 无法引用未定义的标识符如果我理解正确,您只需要在列表中查找元素的索引。我还没有找到这方面的内置过程,但您可以自己轻松完成: (define (position elt lst) (let loop ((lst lst) (i 0)) (cond ((null? lst) #f) ((eq? elt (ca

如果我有这样的清单

(1 2 3) 我想找到2的索引,我使用了这个函数

 (position '3 '(1 2 3))
编译时发生此错误

。位置:未定义;
无法引用未定义的标识符

如果我理解正确,您只需要在列表中查找元素的索引。我还没有找到这方面的内置过程,但您可以自己轻松完成:

(define (position elt lst)
  (let loop ((lst lst) (i 0))
    (cond
      ((null? lst) #f)
      ((eq? elt (car lst)) i)
      (else (loop (cdr lst) (+ 1 i))))))
然后


@Alaa'Agha被接受的答案提到,Racket中没有这样的内置功能,但在一些非常接近的SRFI中有一些类似的功能。
(display (position '3 '(1 2 3)))
=> 2