(define (read key lis) (call/cc (lambda (return) (fold (lambda (cur prev) (if (eq? key (car cur)) (return (car (cdr cur))) prev)) #f lis)))) (define (write key val lis) (if (eq? #f (read key lis)) (cons (list key val) lis) (map (lambda (cur) (if (eq? (car cur) key) (list key val) cur)) lis)))