割り当て用のストリームを実装しようとしていますが、重要なものがありません。
この stream-cons は、値と cdr の約束であるペアを作成する必要があります (後で評価されます) ..
(define (str1) (stream-cons 1 2))
しかし、それから私が電話(stream-car str1)
すると、「契約違反が予想されます:ペアですか?」と不平を言います。
str1 が有効なペアではない理由がわかりません。これを機能させるにはどうすればよいですか?
ロブ
#lang racket
(define-syntax delay
(syntax-rules () ((delay expr) (lambda () expr))))
(define (force delayed-obj)
(delayed-obj))
(define-syntax stream-cons
(syntax-rules() ((stream-cons x y)
(cons x (delay y)))))
(define (stream-car stream)
(car stream))
(define (stream-cdr stream)
(force (cdr stream)))
(define the-empty-stream '())
;;;
; TESTS
(define (str1) (stream-cons 1 2))
(stream-car str1)