이것은 SICP Book Chapter 3.5.2과 관련된 질문입니다.SICP 무한 스트림 (3.5.2 장)
다른 프로그래밍 언어로 스트림 데이터 구조를 구현하고 있습니다. 그리고 다음 스 니펫을 올바르게 이해하는지 잘 모르겠습니다. I는 (cons-stream n (integers-starting-from (+ n 1))))
을 실행하여 값을 반환하는 함수를 실행 (integers-starting-from (+ n 1))
에서 이해 한 것과
(define (integers-starting-from n)
(cons-stream n (integers-starting-from (+ n 1))))
(define integers (integers-starting-from 1))
. cons-stream
의 두 번째 형식 매개 변수는 (integers-starting-from (+ n 1))
이고 ()
으로 묶여 있기 때문에 실행을 지연하는 대신 무한히 다시 함수를 실행합니다.
이 스 니펫을 실행하기 전에 알 수 있듯이 다음 정수는 실행중인 스트림의 초 요소보다 훨씬 이전에 무한 재귀 적으로 연결됩니다.
lecture에 표시된 것과 같이이 방식이 작동하는 이유는 무엇입니까? 에서
내가이 대신 같은 것을 작성해야 이해 :
(define (integers-starting-from n)
(cons-stream n (lambda() (integers-starting-from (+ n 1)))))
(define integers (integers-starting-from 1))
이이 방식은 (integers-starting-from (+ n 1))
의 실행을 지연 마법의 몇 가지 종류가 있음을 의미합니까?
다소 다른 스타일의 스트림을 구현하려면 [SRFI-41] (http://srfi.schemers.org/srfi-41/)을 참조하십시오.이 내용은 [내 블로그] (http : /programmingpraxis.com/essays/#srfi41streams). 이 문서는'cons-stream' 구현을 자세히 설명합니다. – user448810