환경은 기호에 값을 준다.
평가는 표현식의 변수 이름을 그 값에 연결하는 명시적인 환경을 필요로 합니다. 프레임을 만들고 이름을 찾는 환경 모형을 평가기 안에서 살펴봅니다.
생각해 볼 질문
같은 표현식이 다른 환경에서 다른 값을 만드는 이유는 무엇일까요?
- 바인딩을 연관 리스트로 나타내기
- 수 평가와 별도로 기호 조회하기
- 모든 재귀 호출에 하나의 환경 전달하기
lookup은 연관 리스트에서 car가 요청된 기호인 쌍을 찾습니다. 그 쌍의 cdr은 이 환경이 제공하는 값입니다.
evaluate는 x나 y에 영구적인 의미 하나를 붙이지 않습니다. 식과 함께 환경을 전달받으므로 같은 식 트리를 서로 다른 바인딩으로 재사용할 수 있습니다.
SICP 코드UTF-8 678 / 1,048,576바이트
예제
결과—
- 출력
- —
- 값
- —
- 진단
- —
실행 추적0 / 0 개 이벤트
첫 프로그램은 x를 3에, y를 4에 바인딩한 뒤 11을 반환합니다.
x와 y에 대한 기호 경우와 이를 해결하는 assoc 호출을 찾으세요. 두 재귀 갈래 모두 같은 환경 값을 받습니다.
프로그램을 수정하고 결과를 비교해 보세요.
첫 번째 식이 25를 반환하도록 환경만 바꾸세요. 인용된 식은 그대로 유지하세요.
힌트 보기
이 식은 x 더하기 y의 두 배를 계산하므로 여러 가지 바인딩 쌍이 가능합니다.