(define *pi* 3.14159265358979323846) (define (->radians gps) (list (* (/ *pi* 180) (car gps)) (* (/ *pi* 180) (cadr gps)))) (define (gdist l1 l2) (let* ((min1 (->radians l1)) (min2 (->radians l2)) (dlat (- (car min1) (car min2))) (dlon (- (cadr min1) (cadr min2))) (haver (+ (sq (sin (/ dlat 2))) (* (cos (car min1)) (cos (car min2)) (sq (sin (/ dlon 2))))))) (* 6371 2 (asin (sqrt haver)))))