SICP
;;; q2.21 (define (square-list items) (if (null? items) '() (cons (* (car items) (car items)) (square-list (cdr items))) ) ) (define (square-list items) (map (lambda (x) (* x x) ) items) ) (square-list (list 1 2 3)) (define (square x) (* x x) ) (define (square-list items) (define (iter things answer) (if (null? things) answer (iter (cdr things) (cons (square (car things)) answer)))) (iter items '())) (square-list (list 1 2 3)) (define (square-list items) (reverse(square-list-iter items '()))) (define (square-list-iter things answer) (if (not(null? things)) (square-list-iter (cdr things) (cons (square (car things));iter中のリストの頭には常にcdrのcarが来るのです answer)) answer )) (trace square-list-iter) (square-list (list 1 2 3)) (define (square-list items) (define (iter things answer) (if (null? things) answer (iter (cdr things) (cons answer ;リストをconsするので (square (car things)))))) (iter items '())) (square-list (list 1 2 3)) ;;; q2.23 (for-each (lambda (x) (newline) (display x)) (list 55 66 44)) (define (for-each proc list) (if (null? (cdr list)) (proc (car list)) (begin (proc (car list)) (for-each proc (cdr list)))) ) ;;beginは使っちゃダメだろJK ;;だがしかし。 (define (for-each proc list) (if (null? (cdr list)) (proc (car list)) (let () (proc (car list)) (for-each proc (cdr list))) ) ) ;;動くが! (for-each (lambda (x) (newline) (display x)) (list 55 66 44))
letって何?