Explicit delay in the simple-query and disjoin procedures
Louis Reasoner wonders why the simple-query and disjoin procedures (section 220.127.116.11) are implemented using explicit delay operations, rather than being defined as follows:
(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))))
Can you give examples of queries where these simpler definitions would lead to undesirable behavior?
Nobody's finished this exercise yet. You'll be the first!
There are no comments yet.
You must log in to post a comment.Login