이 문제는 연습문제 1.42에서 만든 compose 프로시저를 이용하여
어떤 프로시저 f와 0보다 큰 정수 n을 인자로 받아
프로시저 f를 n번 수행하는 프로시저를 만드는 문제입니다.

문제에 맞는 함수 repoeated를 반복 프로세스로 만들었습니다.
되도는 프로세스로 만들까 생각했지만,
먼저 이것이 생각났기에 이렇게 만들었습니다.
문제에서는 ((repeated square 2) 5)를 실행시켜서 625가 나온다고 하였습니다.
실행시키니 제대로 나오네요.^^
인자에 1을 더하는 프로시저인 inc도 역시 잘 됩니다.
PS
문제의 설명이 조금 잘못된 듯싶습니다.
'f가 제곱 함수면, n번 f한 함수는 인자의 2ⁿ 값을 구한다.'라고 적혀있습니다.
하지만 직접 해보니 n번 f한 함수는 인자의 2ⁿ이 아닌 인자를 x라 할 경우 x^2ⁿ입니다.
따라서 n이 1인 ((repeated square 1) 5)은 25 = 5^2을
n이 3인 ((repeated square 3) 5)은 390625 = 5^8을 결과로 내놓습니다.
제가 이해를 제대로 하지 못한 것인지 오탈자인지 잘 모르겠습니다.
참조
Structure and Interpretation of Computer Programs 2/E - Page 99
"in OCW" 카테고리의 다른 글
- SICP Exercise 연습문제 1.46 (0)2008/01/27
- SICP Exercise 연습문제 1.45 (2)2008/01/27
- SICP Exercise 연습문제 1.44 (0)2008/01/27
- SICP Exercise 연습문제 1.43 (0)2008/01/27
- SICP Exercise 연습문제 1.42 (0)2008/01/27
- SICP Exercise 연습문제 1.41 (0)2008/01/27
- SICP Exercise 연습문제 1.40 (0)2008/01/27
글에 잘못된 점, 다른 점, 부족한 점이 있다면 지적해주세요.
댓글, 트랙백, 메일 모두 고맙습니다.







댓글을 달아 주세요