sicp.io
3.5.2 · 시간을 수열로 나타내기

스트림은 요구한 부분만 드러낸다.

스트림은 지금의 첫 값을 보관하고 나머지 수열을 만드는 계산은 지연합니다. 필요한 만큼만 값을 만들어 내는 지연 수열의 동작을 예제로 확인합니다.

생각해 볼 질문

끝이 없는 수열을 유한한 실행에서 어떻게 사용할 수 있을까요?

  • 스트림을 현재 값과 지연된 꼬리로 읽기
  • 반복되는 stream-ref 호출을 통해 요구 따라가기
  • 무한 프로세스를 기술하는 것과 영원히 실행하는 것 구분하기

cons-stream이 꼬리를 즉시 평가하지 않으므로 integers-from은 끝없는 수열을 기술할 수 있습니다. 각 꼬리는 다음 쌍을 위한 promise입니다.

stream-ref는 요청된 인덱스에 도달하는 데 필요한 만큼만 정확히 꼬리를 force합니다. 인덱스 9를 요청하면 유한한 접두사를 구성하고 10을 반환하므로 이 특정 실행은 종료됩니다.

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

    첫 프로그램은 아홉 개의 스트림 꼬리를 force한 뒤 10을 반환합니다.

    실행 추적에서 볼 점

    반복되는 force 사건을 찾으세요. 계산된 각 결과는 쌍을 하나씩 더 드러내며, 요구되지 않은 나머지는 지연된 상태로 남습니다.

    직접 해보기

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

    요청하는 인덱스를 9에서 4로 바꾸세요. 반환될 값과 force해야 하는 스트림 꼬리의 개수를 예측하세요.

    힌트 보기

    인덱스 0은 cdr을 force하지 않고 현재의 car를 사용합니다.

    이 수업 완료하기

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