sicp.io
4.1.10 · 분석과 실행 나누기

한 번 분석하고 계획을 여러 번 실행한다.

분석기는 표현식 데이터를 환경만 받으면 실행할 수 있는 프로시저로 바꿀 수 있습니다. 구문 분석을 한 번만 하고 실행을 여러 번 반복하는 구조를 다룹니다.

생각해 볼 질문

환경이 오기 전에 어떤 일을 미리 끝낼 수 있을까요?

  • 각 식 노드를 실행 프로시저로 바꾸기
  • 분석된 피연산자 계획을 클로저에 캡처하기
  • 하나의 계획을 여러 환경에서 재사용하기

analyze는 변수 값을 알기 전에 식 트리를 순회합니다. 각 연산자를 선택하고 모든 피연산자에 대해 재귀적으로 프로시저를 구성합니다.

그 결과로 나온 plan은 환경을 받습니다. 이를 실행하면 변수를 조회하고, 저장된 피연산자 계획을 실행하며, 이미 선택된 연산자를 적용하기만 합니다. 따라서 분석된 하나의 plan으로 여러 환경을 처리할 수 있습니다.

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

    첫 프로그램은 하나의 식을 분석하고 두 환경에서 (11 25)를 반환합니다.

    실행 추적에서 볼 점

    초기 analyze 적용과 이후의 plan 적용을 분리하세요. 식 구조는 어느 환경도 제공되기 전에 한 번만 순회됩니다.

    직접 해보기

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

    x가 1이고 y가 100인 세 번째 환경을 추가하세요. analyze를 다시 호출하지 않고 plan을 재사용하세요.

    힌트 보기

    마지막 리스트에 또 다른 plan 적용을 추가하기만 하면 됩니다.

    이 수업 완료하기

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