Lisp中位置函数的错误

时间:2013-12-16 21:48:52

标签: lisp racket

如果我有这样的清单

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

 (position '3 '(1 2 3))

编译此错误时

。 。职位:未定义;  不能引用未定义的标识符

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您只想在列表中找到元素的索引。我没有为此找到内置程序,但您可以自己轻松完成此任务:

(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))))))

然后

(display (position '3 '(1 2 3)))
=> 2