Потоки в схеме - PullRequest
       3

Потоки в схеме

2 голосов
/ 15 февраля 2011

Как работает следующий процесс:

(define integers
  (cons-stream 1 
     (stream-map (lambda (x) (+ x 1)) 
        integers))

1 Ответ

7 голосов
/ 15 февраля 2011

Важно понимать, что здесь оцениваются только те выражения, которые необходимы для вычисления элемента списка, к которому вы обращаетесь.

Поэтому, когда вы получаете доступ к первому элементу, он оценивает первый аргумент как cons-stream, который равен 1.

Когда вы получаете доступ ко второму элементу, он оценивает первый элемент stream-map (lambda (x) (+ x 1)) integers. Для этого ему нужно получить первый элемент integers, который равен 1, а затем добавить к нему 1, и вы получите 2.

Когда вы получаете доступ к третьему элементу, он оценивает второй элемент stream-map (lambda (x) (+ x 1)) integers. Таким образом, он берет второй элемент integers (2) и добавляет к нему 1, чтобы получить 3. И так далее.

...