sicp.io
4.1.3 · 언어 안의 평가기

프로그램은 프로그램을 데이터로 읽을 수 있다.

표현식을 리스트와 기호로 나타내면 보통의 Scheme 프로시저가 그 표현식의 의미를 결정할 수 있습니다.

생각해 볼 질문

표현식 데이터를 값으로 바꾸려면 평가기는 무엇을 해야 할까요?

  • 소스 데이터와 이를 실행하는 평가기 구분하기
  • 연산자 기호에 따라 디스패치하기
  • 중첩된 식을 재귀적으로 평가하기

인용된 리스트는 데이터이므로 호스트 평가기는 맨 앞의 plus 기호를 적용하지 않습니다. evaluate 프로시저는 그 기호를 살펴보고 연산을 직접 선택합니다.

수는 직접 평가됩니다. 복합 식은 그 값을 결합하기 전에 중첩된 두 피연산자를 해석하도록 evaluate에 요청합니다. 평가기는 식 트리를 한 번에 노드 하나씩 따라갑니다.

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

    첫 프로그램은 인용된 식을 해석하여 20을 반환합니다.

    실행 추적에서 볼 점

    중첩된 두 피연산자 트리로 들어가는 evaluate를 따라가세요. 각 수는 직접 값 경우에 도달하고 각 리스트는 연산자 결정에 도달합니다.

    직접 해보기

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

    연산자 경우에 나눗셈을 추가하고 식 (/ (+ 8 4) 3)을 해석하세요.

    힌트 보기

    새 경우는 덧셈과 곱셈과 같은 재귀적 모양을 가집니다.

    이 수업 완료하기

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