2013-12-16 55 views
0

位置功能。如果我有這樣的錯誤在Lisp的

(1 2 3) 名單,我想找到的2的指數,我編寫本時使用的功能

(position '3 '(1 2 3)) 

錯誤發生了

。 。位置:undefined; 不能引用未定義的標識符

回答

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 
+0

奏效感謝 –

+0

@ Alaa'Agha接受的答案爲[怎麼辦我發現Racket中的列表中的元素的索引?](http://stackoverflow.com/q/15871042/1281433)提到Racket中沒有這樣的內置函數,但是在某些情況下有一些類似的功能非常接近的SRFI。 –