sicp.io
1.3.1 · 프로시저를 인수로 넘기기

달라지는 부분을 인자로 넘긴다.

고차 프로시저는 계산의 공통된 모양을 담아 두고 달라지는 연산만 인자로 받습니다. 여러 프로시저에서 반복되는 뼈대를 하나로 추상화하는 방법을 실습합니다.

생각해 볼 질문

하나의 프로시저로 여러 종류의 합을 어떻게 나타낼 수 있을까요?

  • 프로시저를 보통 값처럼 다루기
  • 여러 합에서 바뀌지 않는 계산 구조 찾기
  • term과 next를 통해 달라지는 동작 전달하기

sum은 정수, 제곱, 또는 다른 수열 가운데 무엇을 더하는지 미리 알지 못합니다. term은 더할 값을 고르고 next는 다음 지점을 고릅니다. 재귀 호출은 모든 합에 공통된 순회 구조만 맡습니다.

이 분리는 중요한 설계 습관의 시작입니다. 바뀌지 않는 프로세스에는 한 번 이름을 붙이고 달라지는 결정은 인수로 넘깁니다.

SICP 코드UTF-8 192 / 1,048,576바이트
예제
결과
출력
진단
실행 추적0 / 0 개 이벤트
    실행은 브라우저 안에서 이루어지며 프로그램 결과와 실행 추적을 보여줍니다.
    예상 결과

    첫 프로그램은 55를 반환합니다. 두 번째 프로그램도 55를 반환합니다.

    실행 추적에서 볼 점

    각 단계에서 term과 next를 찾아 적용하는 부분을 살펴보세요. 프로시저 값도 숫자 값과 마찬가지로 같은 평가기를 거칩니다. 실행 흐름은 선택한 한 실행의 프로시저 적용을 정확히 기록합니다.

    직접 해보기

    프로그램을 수정하고 결과를 비교해 보세요.

    term으로 쓸 double 프로시저와 next로 쓸 step-two 프로시저를 정의하세요. sum을 사용해 1부터 9까지 홀수를 두 배 한 값을 모두 더하세요.

    힌트 보기

    next가 값을 건너뛰더라도 순회가 끝나는 경계는 그대로입니다.

    이 수업 완료하기

    이 장의 총 18개 수업 중 0개 완료0%