这道题比较简单直接上代码
#lang racket
(define (make-point x y)
(cons x y))
(define (x-point p)
(car p))
(define (y-point p)
(cdr p))
(define (print-point p)
(newline)
(display "(")
(display (x-point p))
(display ",")
(display (y-point p))
(display ")"))
(define (make-segment a b)
(cons a b))
(define (start-segment s)
(car s))
(define (end-segment s)
(cdr s))
(define (midpoint-segment s)
(let ((a (start-segment s)) (b (end-segment s)))
(make-point (/ (+ (x-point a) (x-point b)) 2.0) (/ (+ (y-point a) (y-point b)) 2.0))))
(print-point (midpoint-segment (make-segment (make-point 3 3) (make-point 2 2))))
(print-point (midpoint-segment (make-segment (make-point 1 3) (make-point 1 2))))
运行结果
(2.5,2.5)
(1.0,2.5)