SICP_2.44-2.47

 1 #lang sicp
 2 
 3 (#%require sicp-pict)
 4 
 5 
 6 ;;;;;;;;;;;;;;;;;;2.44
 7 (define (up-split painter n)
 8   (if (= n 0)
 9       painter
10       (let ((smaller (up-split painter (- n 1))))
11         (below painter (beside smaller smaller)))))
12 
13 ;;;;;;;;;;;;;;;;;test
14 (paint (up-split einstein 4))
15 
16 ;;;;;;;;;;;;;;;;;;2.45
17 
18 (define (split op1 op2)
19   (lambda (painter n)
20     (if (= n 0)
21         painter
22         (let ((smaller ((split op1 op2) painter (- n 1))))
23           (op1 painter (op2 smaller smaller))))))
24 
25 ;(define (split op1 op2)
26 ;  (define (inner pinter n)
27 ;    (if (= n 0)
28 ;        painter
29 ;        (let ((smaller (inner painter (- n 1))))
30 ;          (op1 painter (op2 smaller smaller)))))
31 ;  inner)
32 
33 (define right-split (split beside below))
34 ;;;;;;;;;;;;;;;;;test
35 (paint (right-split einstein 4))
36 
37 ;;;;;;;;;;;;;;;;;;;2.46
38 (define (make-vect a b)
39   (cons a b))
40 
41 (define (xcor-vect v)
42   (car v))
43 
44 (define (ycor-vect v)
45   (cdr v))
46 
47 (define (add-vect v1 v2)
48   (make-vect (+ (xcor-vect v1)
49                 (xcor-vect v2))
50              (+ (ycor-vect v1)
51                 (ycor-vect v2))))
52 
53 (define (sub-vect v1 v2)
54   (make-vect (- (xcor-vect v1)
55                 (xcor-vect v2))
56              (- (ycor-vect v1)
57                 (ycor-vect v2))))
58 
59 (define (scale-vect s v1)
60   (make-vect (* s (xcor-vect v1))
61              (* s (ycor-vect v1))))
62 
63 ;;;;;;;;;;;;;;;;;;;;2.47
64 (define (make-frame1 origin edge1 edge2)
65   (list origin edge1 edge2))
66 
67 (define (make-frame2 origin edge1 edge2)
68   (cons origin (cons edge1 edge2)))
69 
70 ;;;;;;;;;;;;;;;1
71 (define (origin-frame1 frame)
72   (car frame))
73 
74 (define (edge1-frame1 frame)
75   (cadr frame))
76 
77 (define (edge2-frame1 frame)
78   (caddr frame))
79 
80 ;;;;;;;;;;;;;;;2
81 (define (origin-frame2 frame)
82   (car frame))
83 
84 (define (edge1-frame2 frame)
85   (cadr frame))
86 
87 (define (edge2-frame2 frame)
88   (cddr frame))

 

转载于:https://www.cnblogs.com/tclan126/p/6424906.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值