• 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))
    Yosoro
  • 相关阅读:
    Vue内置指令
    Vue计算属性
    Ubuntu下编译Bilibili/ijkplayer
    自毁程序
    Android最大可运行内存
    Android ListView onItemClick Not Work
    Java/Android 二进制数据与String互转
    JAVA/Android Map与String的转换方法
    java中打印变量地址
    Win7 关闭Window update
  • 原文地址:https://www.cnblogs.com/tclan126/p/6424906.html
Copyright © 2020-2023  润新知