Skip to content

Commit

Permalink
Merge pull request #908 from burenkov-anton/tests-3.59
Browse files Browse the repository at this point in the history
Add tests for 3.59
  • Loading branch information
fey committed Jun 10, 2021
2 parents 77b2b63 + 3d3fac0 commit be5b486
Showing 1 changed file with 60 additions and 0 deletions.
60 changes: 60 additions & 0 deletions resources/views/exercise/solution_stub/3_59.blade.php
@@ -0,0 +1,60 @@
#lang sicp
(#%require rackunit)


;;; BEGIN
{!! $solution !!}
;;; END

(define (stream-car stream) (car stream))

(define (stream-cdr stream) (force (cdr stream)))

(define (stream-map proc . list-of-stream)
(if (null? (car list-of-stream))
'()
(cons-stream
(apply proc
(map (lambda (s)
(stream-car s))
list-of-stream))
(apply stream-map
(cons proc (map (lambda (s)
(stream-cdr s))
list-of-stream))))))


(define (mul-streams s1 s2)
(stream-map * s1 s2))

(define (div-streams s1 s2)
(stream-map / s1 s2))

(define (add-streams s1 s2)
(stream-map + s1 s2))

(define ones (cons-stream 1 ones))

(define integers (cons-stream 1 (add-streams ones integers)))

(define (scale-stream stream factor)
(stream-map (lambda (x) (* x factor)) stream))

(define double (cons-stream 1 (scale-stream double 2)))

(define scar stream-car)
(define scdr stream-cdr)

(define s (integrate-series double))

(check-equal? (scar s) 1)
(check-equal? (scar (scdr s)) 1)
(check-equal? (scar (scdr (scdr (scdr s)))) 2)
(check-equal? (scar (scdr (scdr (scdr (scdr (scdr (scdr (scdr s)))))))) 16)

(check-equal? (stream-car sine-series) 0)
(check-equal? (stream-car (stream-cdr sine-series)) 1)
(check-equal? (stream-car (stream-cdr (stream-cdr sine-series))) 0)
(check-equal? (stream-car cosine-series) 1)
(check-equal? (stream-car (stream-cdr cosine-series)) 0)
(check-equal? (stream-car (stream-cdr (stream-cdr cosine-series))) -1/2)

0 comments on commit be5b486

Please sign in to comment.