Created
December 21, 2015 07:25
-
-
Save ruandao/6286a59bbebf0fbfe67c to your computer and use it in GitHub Desktop.
sicp 3.51
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (restart 1) | |
| (load "stream.scm") | |
| (define (stream-map proc . argstreams) | |
| (if (stream-null? (car argstreams)) | |
| the-empty-stream | |
| (let ((s1 (apply proc (map stream-car argstreams)))) | |
| (display s1) | |
| (cons-stream | |
| s1 | |
| (apply stream-map | |
| (cons proc (map stream-cdr argstreams))))))) | |
| (trace stream-enumerate-interval) | |
| (define a (stream-enumerate-interval 1 9)) | |
| (define b (stream-enumerate-interval 4 8)) | |
| ;(define z (stream-map + a b)) | |
| (display-stream a) | |
| ;(display-stream z) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| (define (force delayed-object) | |
| (delayed-object)) | |
| (define (memo-proc proc) | |
| (let ((already-run? false) | |
| (result false)) | |
| (lambda() | |
| (if (not already-run?) | |
| (begin | |
| (set! already-run? true) | |
| (set! result (proc)) | |
| result) | |
| result)))) | |
| (define (stream-car stream) (car stream)) | |
| (define (stream-cdr stream) | |
| (force (cdr stream))) | |
| (define (stream-ref s n) | |
| (if (= n 0) | |
| (stream-car s) | |
| (stream-ref (stream-cdr s) (- n 1)))) | |
| (define (stream-map-1 proc s) | |
| (if (stream-null? s) | |
| the-empty-stream | |
| (cons-stream (proc (stream-car s)) | |
| (stream-map proc (stream-cdr s))))) | |
| (define (stream-for-each proc s) | |
| (if (stream-null? s) | |
| 'done | |
| (let ((s1 (stream-car s))) | |
| (begin (proc s1) | |
| (stream-for-each proc (stream-cdr s)))))) | |
| (define (stream-enumerate-interval low high) | |
| (if (> low high) | |
| the-empty-stream | |
| (cons-stream | |
| low | |
| (stream-enumerate-interval (+ low 1) high)))) | |
| (define (stream-filter pred stream) | |
| (cond | |
| ((stream-null? stream) the-empty-stream) | |
| ((pred (stream-car stream)) | |
| (cons-stream (stream-car stream) | |
| (stream-filter pred | |
| (stream-cdr stream)))) | |
| (else (stream-filter pred (stream-cdr stream))))) | |
| (define (display-line x) | |
| (newline) | |
| (display x)) | |
| (define (display-stream s) | |
| (stream-for-each display-line s)) |
Author
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
well 我抄了网上一位同学的也是报同样的错误