(define list-index (lambda (s los) (if (null? los) -1 (list-index# s los 0)))) (define list-index# (lambda (s los pos) (if (null? los) -1 (if (eq? (car los) s) pos (list-index# s (cdr los) (+ 1 pos)))))) (define ribassoc (lambda (s los v fail-value) (if (= (list-index s los) -1) fail-value (vector-ref v (list-index s los))))) (define R (ribassoc 'b '(a b c) '#(1 2 3) 'fail)) (define R2 (ribassoc 'c '(a b foo) '#(3 squiggle bar) 'fail))