SICP演習問題4.75
4章もあとちょっと
;; exercise 4.75 (define (uniquely-asserted operands frame-stream) (stream-flatmap (lambda (frame) (let ((result (qeval (uniquely-query operands) (singleton-stream frame)))) (cond ((stream-null? result) the-empty-stream) ((stream-null? (stream-cdr result)) result) (else the-empty-stream)))) frame-stream)) (put 'unique 'qeval uniquely-asserted)
condの順序に注意.この順序でなければ,resultが空の場合, stream-cdrでエラーになってしまう.