Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
; - Program 7.1, pg. 196 - (define map (lambda (proc ls) (if (null? ls) '() (cons (proc (car ls)) (map proc (cdr ls)))))) ; - End Program - ; - Program 7.2, pg. 197 - (define for-each (lambda (proc ls) (if (not (null? ls)) (begin (proc (car ls)) (for-each proc (cdr ls)))))) ; - End Program - ; - Program 7.3, pg. 198 - (define add (letrec ((list-add (lambda (ls) (if (null? ls) 0 (+ (car ls) (list-add (cdr ls))))))) (lambda args (list-add args)))) ; - End Program - ; - Program 7.4, pg. 199 - (define list (lambda args args)) ; - End Program - ; - Program 7.5, pg. 199 - (define writeln (lambda args (for-each display args) (newline))) ; - End Program - ; - Program 7.6, pg. 199 - ;(define error ; (lambda args ; (display "Error:") ; (for-each (lambda (value) (display " ") (display value)) args) ; (newline) ; (reset))) ; - End Program - ; - Program 7.7, pg. 200 - (define add (lambda args (if (null? args) 0 (+ (car args) (apply add (cdr args)))))) ; - End Program - ; - Program 7.8, pg. 201 - (define compose (lambda (f g) (lambda (x) (f (g x))))) ; - End Program - ; - Program 7.9, pg. 203 - (define plus (lambda (x y) (if (zero? y) x (add1 (plus x (sub1 y)))))) ; - End Program - ; - Program 7.10, pg. 203 - (define times (lambda (x y) (if (zero? y) 0 (plus x (times x (sub1 y)))))) ; - End Program - ; - Program 7.11, pg. 203 - (define exponent (lambda (x y) (if (zero? y) 1 (times x (exponent x (sub1 y)))))) ; - End Program - ; - Program 7.12, pg. 203 - (define super (lambda (x y) (if (zero? y) 1 (exponent x (super x (sub1 y)))))) ; - End Program - ; - Program 7.13, pg. 204 - (define superduper (lambda (x y) (if (zero? y) 1 (super x (superduper x (sub1 y)))))) ; - End Program - ; - Program 7.14, pg. 204 - (define super-order (lambda (n) (cond ((= n 1) plus) ((= n 2) times) (else (lambda (x y) (cond ((zero? y) 1) (else ((super-order (sub1 n)) x ((super-order n) x (sub1 y)))))))))) ; - End Program - ; - Program 7.15, pg. 205 - (define ackermann (lambda (n) ((super-order n) n n))) ; - End Program - ; - Exercise 7.5, pg. 206 - (define iota (lambda (n) (letrec ((iota-helper (lambda (k acc) (cond ((zero? k) (cons 0 acc)) (else (iota-helper (sub1 k) (cons k acc))))))) (iota-helper (sub1 n) '())))) (define mystery (lambda (len base) (letrec ((mystery-help (lambda (n s) (if (zero? n) (list s) (let ((h (lambda (x) (mystery-help (sub1 n) (cons x s))))) (apply append (map h (iota base)))))))) (mystery-help len '())))) ; - End Exercise - ; - Exercise 7.8, pg. 208 - (define andmap (lambda (pred ls) (reduce (lambda (x y) (and x y)) (map pred ls)))) ; - End Exercise - ; - Exercise 7.10, pg. 209 - (define ormap (lambda (pred ls) (if (null? ls) #f (or (pred (car ls)) (ormap pred (cdr ls)))))) ; - End Exercise - ; - Program 7.16, pg. 212 - (define member?-c (lambda (item) (letrec ((helper (lambda (ls) (if (null? ls) #f (or (equal? (car ls) item) (helper (cdr ls))))))) helper))) ; - End Program - ; - Program 7.17, pg. 213 - (define apply-to-all (lambda (proc) (letrec ((helper (lambda (ls) (if (null? ls) '() (cons (proc (car ls)) (helper (cdr ls))))))) helper))) ; - End Program - ; - Program 7.18, pg. 213 - (define sum (letrec ((helper (lambda (ls) (if (null? ls) 0 (+ (car ls) (helper (cdr ls))))))) helper)) ; - End Program - ; - Program 7.19, pg. 213 - (define product (letrec ((helper (lambda (ls) (if (null? ls) 1 (* (car ls) (helper (cdr ls))))))) helper)) ; - End Program - ; - Program 7.20, pg. 214 - (define swapper-m (lambda (x y) (letrec ((helper (lambda (ls) (cond ((null? ls) '()) ((equal? (car ls) x) (cons y (helper (cdr ls)))) ((equal? (car ls) y) (cons x (helper (cdr ls)))) (else (cons (car ls) (helper (cdr ls)))))))) helper))) ; - End Program - ; - Exercise 7.14, pg. 215 - ;(define round-5-places (round-n-places 5)) ; - End Exercise - ; - Exercise 7.19, pg. 216 - (define andmap-c (lambda (pred) (letrec ((and-help (lambda (ls) (cond ((null? ls) #t) (else (and (pred (car ls)) (and-help (cdr ls)))))))) and-help))) ;(define all-positive? (andmap-c positive?)) (define ormap (lambda (pred ls) ((ormap-c pred) ls))) ;(define some-positive? (ormap-c positive?)) ; - End Exercise - ; - Exercise 7.20, pg. 217 - (define divides-by (lambda (n) (lambda (k) (zero? (remainder k n))))) ; - End Exercise - ; - Program 7.23, pg. 221 - (define flat-recur (lambda (seed list-proc) (letrec ((helper (lambda (ls) (if (null? ls) seed (list-proc (car ls) (helper (cdr ls))))))) helper))) ; - End Program - ; - Program 7.24, pg. 222 - (define filter-in-c (lambda (pred) (flat-recur '() (lambda (x y) (if (pred x) (cons x y) y))))) ; - End Program - ; - Program 7.25, pg. 225 - (define filter-in-all-c (lambda (pred) (letrec ((helper (lambda (ls) (if (null? ls) '() (let ((a (car ls))) (if (or (pair? a) (null? a)) (cons (helper a) (helper (cdr ls))) (if (pred a) (cons a (helper (cdr ls))) (helper (cdr ls))))))))) helper))) ; - End Program - ; - Program 7.26, pg. 225 - (define filter-in-all (lambda (pred ls) ((filter-in-all-c pred) ls))) ; - End Program - ; - Program 7.27, pg. 225 - (define sum-all (letrec ((helper (lambda (ls) (if (null? ls) 0 (let ((a (car ls))) (if (or (pair? a) (null? a)) (+ (helper a) (helper (cdr ls))) (+ a (helper (cdr ls))))))))) helper)) ; - End Program - ; - Program 7.28, pg. 227 - (define deep-recur (lambda (seed item-proc list-proc) (letrec ((helper (lambda (ls) (if (null? ls) seed (let ((c (car ls))) (if (or (pair? c) (null? c)) (list-proc (helper c) (helper (cdr ls))) (item-proc c (helper (cdr ls))))))))) helper))) ; - End Program -