sicp 习题2.3

#lang planet neil/sicp
;; init the cons and other basic fuction
(define (make-point x y) (cons x y))
(define (x-point point) (car point))
(define (y-point point) (cdr point))
(define (make-segment start end) (cons start end))
(define (start-segment seg) (car seg))
(define (end-segment seg) (cdr seg))
(define (square x) (* x x))
;; call the distance of two point
(define (distance start end)
  (sqrt (+ (square (- (x-point end)
                                 (x-point start)))
                (square (- (y-point end)
                                (y-point start))))))
;; the length of a segment
(define (distance-of-segment seg)
  (let ((start (start-segment seg))
         (end (end-segment seg)))
         (distance start end)))
;; the perimeter of the rectangle
(define (perimeter x y) (* 2 (+ (distance-of-segment x) (distance-of-segment y))))
;; the area of the rectangle
(define (area x y) (* (distance-of-segment x) (distance-of-segment y)))
;; the input you need init
(define p1 (make-point 0 0))
(define p2 (make-point 2 0))
(define p3 (make-point 2 2))
(define l1 (make-segment p1 p2))
(define l2 (make-segment p2 p3))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值