SICP 연습문제 2.31 친절한 풀이

문제

연습문제 2.30에서 만든 square-tree 프로시저를 요약하여간추려서 다음과 같이 정의할 수 있도록 차수 높은 프로시저 tree-map을 정의하여라.

(define (square-tree tree) (tree-map square tree))

문제로 부터 얻은 것

특정 프로시저를 약간 수정해서 차수 높은 프로시저를 만드는 경험을 할 수 있었습니다.

문제풀이

연습문제 2.30에서 만든 map을 이용한 square-tree 프로시저는 다음과 같습니다.

(define (square-tree x)
(define (square-if-number x)
(if (pair? x)
(map square-if-number x)
(square x)))

(map square-if-number x))



위의 프로시저를 변형해서 일반적인 상황에서 쓸 수 있는 차수 높은 프로시저를 만들면 아래와 같습니다.

(define (tree-map proc tree)
(define (proc-if-not-tree x)
(if (pair? x)
(map proc-if-not-tree x)
(proc x)))
(proc-if-not-tree tree))



테스트 케이스가 잘 동작하는 모습



읽어주셔서 감사합니다.