现在的位置: 首页 > 综合 > 正文

sicp 习题2.3

2013年08月15日 ⁄ 综合 ⁄ 共 977字 ⁄ 字号 评论关闭
#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))

抱歉!评论已关闭.