# find-index.scm -rw-r--r-- 319 bytes View raw
                                                                                
1
2
3
4
5
6
7
8
9
10
11
12
13
(define (find-index x lst)
  (cond
    ((member x lst) => 
     (lambda (tail) 
       (let loop ((l lst) (i 0))
         (if (eq? l tail)
             i
             (loop (cdr l) (+ i 1))))))
    (else #f)))

(find-index 'b '(a b c d))  ;; => 1
(find-index 'd '(a b c d))  ;; => 3
(find-index 'z '(a b c d))  ;; => #f