(define normalize (n) (if (> n 1) (normalize (/ n 10)) n)) (define (normalize value) (if (>= value 1) (normalize (* value 0.1)) value ) ) (define (normalize n mult) (cond ((>= n 1) (normalize (* n 0.1) (* mult 10))) ((<= n 0.1) (normalize (* n 10) (* mult 0.1))) (else (n . mult)))) (define (nearest-impl val lst higher lower) (if (null? lst) (list higher lower) (let ((next (car lst)) (rest (cdr lst))) (cond ((< val next) (nearest-impl val rest (min higher next) lower)) (else (nearest-impl val rest higher (max lower next)))))))