所以我的作业有以下标准:
给出了名为euclidean-distance的函数的定义。此函数计算xy平面中两点之间的距离。这些点以四个单独的数字给出:x1,y1,x2和y2。
重写函数,使其接受两个参数,两个参数都是Posn类型,并运行相同的计算。
> (define the-origin (make-posn 0 0))
> (define some-point (make-posn 3 7))
> (euclidean-distance the-origin some-point)
#i7.615773105863909
> (euclidean-distance (make-posn 1 1) (make-posn 4 5))
5
我的麻烦在于,我不确定如何提取我需要的信息,以便比较差异等等。到目前为止我所拥有的:
(define (euclidean-distance posn1 posn2)
(sqrt (+ (sqr (- posn1-x posn2-x))
(sqr (- posn1-y posn2-y)))))
不确定如何处理我需要做的事情。
答案 0 :(得分:2)
只需使用每个职位的访问者程序,如下所示:
(define (euclidean-distance posn1 posn2)
(sqrt (+ (sqr (- (posn-x posn1) (posn-x posn2)))
(sqr (- (posn-y posn1) (posn-y posn2))))))