한 번 분석하고 계획을 여러 번 실행한다.
분석기는 표현식 데이터를 환경만 받으면 실행할 수 있는 프로시저로 바꿀 수 있습니다. 구문 분석을 한 번만 하고 실행을 여러 번 반복하는 구조를 다룹니다.
생각해 볼 질문
환경이 오기 전에 어떤 일을 미리 끝낼 수 있을까요?
- 각 식 노드를 실행 프로시저로 바꾸기
- 분석된 피연산자 계획을 클로저에 캡처하기
- 하나의 계획을 여러 환경에서 재사용하기
analyze는 변수 값을 알기 전에 식 트리를 순회합니다. 각 연산자를 선택하고 모든 피연산자에 대해 재귀적으로 프로시저를 구성합니다.
그 결과로 나온 plan은 환경을 받습니다. 이를 실행하면 변수를 조회하고, 저장된 피연산자 계획을 실행하며, 이미 선택된 연산자를 적용하기만 합니다. 따라서 분석된 하나의 plan으로 여러 환경을 처리할 수 있습니다.
SICP 코드UTF-8 837 / 1,048,576바이트
예제
결과—
- 출력
- —
- 값
- —
- 진단
- —
실행 추적0 / 0 개 이벤트
첫 프로그램은 하나의 식을 분석하고 두 환경에서 (11 25)를 반환합니다.
초기 analyze 적용과 이후의 plan 적용을 분리하세요. 식 구조는 어느 환경도 제공되기 전에 한 번만 순회됩니다.
프로그램을 수정하고 결과를 비교해 보세요.
x가 1이고 y가 100인 세 번째 환경을 추가하세요. analyze를 다시 호출하지 않고 plan을 재사용하세요.
힌트 보기
마지막 리스트에 또 다른 plan 적용을 추가하기만 하면 됩니다.