Явные операции delay в simple-query и disjoin

Хьюго Дум не понимает, почему процедуры simple-query и disjoin реализованы через явные операции delay , а не следующим образом:

(define (simple-query query-pattern frame-stream)
  (stream-flatmap
   (lambda (frame)
     (stream-append (find-assertions query-pattern frame)
                    (apply-rules query-pattern frame)))
   frame-stream))

(define (disjoin disjuncts frame-stream)
  (if (empty-disjunction? disjuncts)
      the-empty-stream
      (interleave
       (qeval (first-disjunct disjuncts) frame-stream)
       (disjoin (rest-disjuncts disjuncts) frame-stream))))

Можете ли Вы дать примеры запросов, с которыми эти простые определения приведут к нежелательному поведению?


Комментарии отсутствуют.

Необходима авторизация

Вы должны авторизоваться для создания комментария.

Вход