;; Return the index of the first occurrence of el in lst.
;; Return #f is el is not found in lst.
;; Comparison is done by comparator.
;; The index of the first element is 0.
(define (index-in-list-by-predicate lst el comparator)
(index-in-list-by-predicate-1 lst el comparator 0))
(define (index-in-list-by-predicate-1 lst el comparator i)
(cond ((null? lst) #f)
((comparator el (car lst)) i)
(else (index-in-list-by-predicate-1 (cdr lst) el comparator (+ i 1)))))