0
我正在嘗試爲任務實現流,並且我失去了一些重要的東西。我在這個方案流實現中做了什麼錯誤?
該流利弊應該創建一對這是一個值和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)
謝謝!我怎麼沒有看到這一點。 – 2013-03-17 19:06:13