Difference between revisions of "Thunks and Streams Assignment"
(→thunk?) |
|||
Line 20: | Line 20: | ||
==Thunk Utilities== | ==Thunk Utilities== | ||
===thunk?=== | ===thunk?=== | ||
− | define a function <code>thunk?</code> which returns #t if the specified parameter is a thunk, #f otherwise. | + | define a function <code>thunk?</code> which returns [https://docs.racket-lang.org/reference/booleans.html #t] if the specified parameter is a thunk, [https://docs.racket-lang.org/reference/booleans.html #f] otherwise. |
<nowiki>(define (thunk? th) | <nowiki>(define (thunk? th) | ||
(error 'not-yet-implemented))</nowiki> | (error 'not-yet-implemented))</nowiki> | ||
+ | |||
===thunk MACRO=== | ===thunk MACRO=== | ||
define a macro <code>thunk</code> which creates thunk | define a macro <code>thunk</code> which creates thunk |
Revision as of 01:37, 16 March 2020
Contents
Code To Use
Code To Implement
file: | src/main/racket/hw4/hw4.rkt | |
functions: | thunk? thunk-that dethunk-that ... |
Thunk Utilities
thunk?
define a function thunk?
which returns #t if the specified parameter is a thunk, #f otherwise.
(define (thunk? th) (error 'not-yet-implemented))
thunk MACRO
define a macro thunk
which creates thunk
dethunk
define a function dethunk
which takes a thunk parameter th
and returns the result of invoking th
.
Stream Utilities
plausible-stream?
define a function plausible-stream?
which returns #t if the specified parameter is a thunk which when invoked returns a pair whose cdr is a thunk, #f otherwise.
WARNING: what could happen if you called plausible-stream?
recursively on the cdr
?
next-value-from-stream
define a function next-value-from-stream
which takes a stream parameter and returns the next value of that stream.
next-stream-from-stream
define a function next-stream-from-stream
which takes a stream parameter and returns the next stream of that stream.
stream-next
BONUS method not officially part of the studio but a good idea.
define a function stream-next
which takes a stream parameter and returns a pair of values for the next value and the next stream.
stream-cons
define a function stream-cons
which takes two parameters value
and stream-prime
. if the specified stream-prime
parameter is not a thunk then an error should be raised:
(raise (error "not a thunk" stream-prime))
If stream-prime
is a thunk it should simply cons value
and stream-prime
. Do NOT create a thunk.
WARNING: what could happen if you called plausible-stream?
on stream-prime
?
Stream App
flip-flop-stream
define flip-flop-stream
which produces #t #f #t #f #t #f #t #f...