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