프로그램은 프로그램을 데이터로 읽을 수 있다.
표현식을 리스트와 기호로 나타내면 보통의 Scheme 프로시저가 그 표현식의 의미를 결정할 수 있습니다.
생각해 볼 질문
표현식 데이터를 값으로 바꾸려면 평가기는 무엇을 해야 할까요?
- 소스 데이터와 이를 실행하는 평가기 구분하기
- 연산자 기호에 따라 디스패치하기
- 중첩된 식을 재귀적으로 평가하기
인용된 리스트는 데이터이므로 호스트 평가기는 맨 앞의 plus 기호를 적용하지 않습니다. evaluate 프로시저는 그 기호를 살펴보고 연산을 직접 선택합니다.
수는 직접 평가됩니다. 복합 식은 그 값을 결합하기 전에 중첩된 두 피연산자를 해석하도록 evaluate에 요청합니다. 평가기는 식 트리를 한 번에 노드 하나씩 따라갑니다.
SICP 코드UTF-8 519 / 1,048,576바이트
예제
결과—
- 출력
- —
- 값
- —
- 진단
- —
실행 추적0 / 0 개 이벤트
첫 프로그램은 인용된 식을 해석하여 20을 반환합니다.
중첩된 두 피연산자 트리로 들어가는 evaluate를 따라가세요. 각 수는 직접 값 경우에 도달하고 각 리스트는 연산자 결정에 도달합니다.
프로그램을 수정하고 결과를 비교해 보세요.
연산자 경우에 나눗셈을 추가하고 식 (/ (+ 8 4) 3)을 해석하세요.
힌트 보기
새 경우는 덧셈과 곱셈과 같은 재귀적 모양을 가집니다.