文章列表
练习2.33-2.36
- 博客分类:
- lisp
exercise 2.33
(define (map2 p sequence)
(accumulate (lambda (x y)
(cons (p x)
y))
nil sequence))
(define (append2 seq1 seq2)
(accumulate cos seq1 seq2))
(define (length2 sequence)
(accumulate (lambda (x y) (+ 1 y)) 0 sequence))
ex ...
练习2.30-2.32
- 博客分类:
- lisp
2.30
(define (square-tree l)
(cond ((null? l) '())
((not (pair? l)) (square l))
(else (cons (square-tree (car l))
(square-tree (cdr l))))))
(define (square-tree2 l)
(map (lambda (sl)
(if (pair? sl)
(square-tree2 sl)
...
(define (my-for-each proc items)
(if (null? items)
#f
(and (proc (car items))
(my-for-each proc (cdr items)))))
为什么顺序会反?看看iter和cons的结构顺序就明白了
(define (square-list items)
(define (iter things answer)
(if (null? things)
answer
(cons (square (car things))
(iter (cdr things) answer))))
(iter items '()))
(define (same-parity x . z)
(define (q? y) (= (remainder y 2) 1))
(define (o? y) (= (remainder y 2) 0))
(define (jg z f)
(define m '())
(define (je a f m)
(if (f (car a))
(append m (list (car a)))
m))
(if (null? (cdr z))
(je z f m ...