비공개 저장 위치는 프로토콜을 재사용 가능한 객체로 바꿀 수 있다.
계측과 실험 진행 상태를 안정된 프로시저 인터페이스 뒤에 두어 모든 호출자가 장부 상태를 직접 전달하지 않게 합니다.
숨은 상태는 언제 서로 독립적인 프로시저의 협력을 더 단순하게 만들까요?
- 호출 횟수를 하나의 monitored 프로시저 뒤에 캡슐화하기
- 보통 요청과 count·reset 메시지 구분하기
- 유한 실험이 다음 결과를 기억하게 만들기
- Monte Carlo 제어와 실험 저장 표현 분리하기
- 명시적인 유한 일정의 재현성 경계 설명하기
make-monitored는 임의의 프로시저에 비공개 calls 바인딩 하나를 더합니다. 보통 숫자 메시지는 calls를 늘리고 원래 프로시저에 위임합니다. count와 reset 메시지는 모든 호출자가 실제 인자와 함께 횟수를 들고 다니지 않아도 계측 상태를 살펴보거나 바꿉니다.
두 번째 프로그램은 Monte Carlo 제어기와 상태가 있는 실험 객체를 분리합니다. monte-carlo는 experiment를 호출하면 다음 boolean이 나온다는 사실만 알고 남은 결과의 표현은 모릅니다. 제공된 유한 리스트는 실행을 재현 가능하게 만들고 대입의 모듈성 장점을 직접 모델링합니다.
- 출력
- —
- 값
- —
- 진단
- —
계측 프로그램은 (9 16 2 reset 0)을 반환합니다. 유한 실험은 ((3 5 3/5) exhausted)를 반환합니다.
비공개 calls 바인딩을 찾고 보통 위임과 count·reset 메시지를 구분하세요. 실험에서는 각 결과 뒤의 cdr 대입을 따라가고 monte-carlo가 결과 리스트를 직접 읽지 않는지 확인하세요.
프로그램을 수정하고 결과를 비교해 보세요.
make-monitored에 last-result 메시지를 추가한 뒤 같은 결과 리스트에서 실험 두 개를 만들고 호출을 엇갈리게 하세요. 어느 비공개 저장 위치가 서로 영향을 줄 수 있는지 예상하세요.
힌트 보기
각 생성자 호출은 별도 저장 위치를 만듭니다. 제어기는 계속 experiment 프로시저 인터페이스만 사용해야 합니다.