2.47

练习 2.47 下面是实现框架的两个可能的过程函数:

(define (make-frame origin edge1 edge2)
    (list origin edge1 edge2)
)

(define (make-frame origin edge1 edge2)
    (cons origin (cons edge1 edge2))
)

请为每个构造函数提供适当的选择函数,为框架做出相应的实现。


第一种

 
(define make-vect cons)
(define xcor-vect car)
(define ycor-vect cdr)
(define o (make-vect 1 2))
(define e1 (make-vect 2 3))
(define e2 (make-vect 4 5))
(define (make-frame origin edge1 edge2)
  (list origin edge1 edge2)
  )
(define (origin-frame frame)
  (list-ref frame 0)
  )
(define f (make-frame o e1 e2))
f
x
 
((1 . 2) (2 . 3) (4 . 5))
 
(origin-frame f)
 
(1 . 2)
 
(define (edge1-frame frame)
  (list-ref frame 1)
  )
(edge1-frame f)
 
(2 . 3)
 
(define (edge2-frame frame)
  (list-ref frame 2)
  )
(edge2-frame f )
 
(4 . 5)

第二种

 
(define (make-frame origin edge1 edge2)
  (cons origin (cons edge1 edge2))
  )
(define (origin-frame frame)
  (car frame)
  )
(define f (make-frame o e1 e2))
f
 
((1 . 2) (2 . 3) 4 . 5)
 
(origin-frame f)
 
(1 . 2)
 
(define (edge1-frame frame)
  (car (cdr frame))
  )
(edge1-frame f)
 
(2 . 3)
 
(define (edge2-frame frame)
  (cdr (cdr frame))
  )
(edge2-frame f )
 
(4 . 5)

results matching ""

    No results matching ""