2013-12-16 3 views
0

Если у меня есть список, как этотошибка в функции положения в Лиспе

(1 2 3) И я хочу, чтобы найти индекс 2, я использовал функцию

(position '3 '(1 2 3)) 

при составлении этого произошла ошибка

. , position: 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

который работал Thanks –

+0

@ Alaa'Agha Принятая ответ на [Как Я нашел индекс элемента в списке в Racket?] (Http://stackoverflow.com/q/15871042/1281433) упоминает, что в Racket нет такой встроенной функции, но есть некоторые аналогичные функции в некоторых из SRFIs, которые очень близки. –

Смежные вопросы