(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))

    Source: geocities.com/siliconvalley/way/5970

               ( geocities.com/siliconvalley/way)                   ( geocities.com/siliconvalley)