本日はSICP読書会
書いたソースとか
(define (count-leaves tree) (fold + 0 (map (lambda (x) (if (pair? x) (count-leaves x) 1)) tree))) (define (sum seq) (fold + 0 seq)) (define (dot-product v w) (sum (map * v w))) (define (transpose mat) (fold-right (lambda (first rest) (if (null? rest) (map list first) (map cons first rest))) '() mat)) (define (matrix-*-vect mat vec) (map (lambda (m) (dot-product m vec)) mat)) (define (matrix-*-matrix mat1 mat2) (map (lambda m1 (map dot-product m1 (transpose mat2))) mat1)) (define (matrix-+-matrix mat1 mat2) (map (lambda (x y) (map + x y)) mat1 mat2)) (define (reverse seq) (fold-right (lambda (x y) (append y (list x))) '() seq)) (define (reverse seq) (fold-left (lambda (x y) (cons x y)) '() seq))