(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 list higher lower) (if (null? list) (list higher lower) (let ((next (car list)) (rest (cdr list))) (cond ((> val next) (nearest-impl val rest (min higher next) lower)) (else (nearest-impl val rest higher (max lower next)))))))