#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))