Question: Write a pure function cycle - streams that takes streams, xs and ys , and returns a stream. The streams may or may not be

Write a pure function cycle-streams that takes streams, xs and ys, and returns a stream. The streams may or may not be the same length, and either one may be infinite, but you may assume they are both non-empty. The elements produced by the stream are pairs where the first part is from xs and the second part is from ys. The stream returned by cycle-streams cycles forever through the streams xs and ys. A constant-time (
O
(
1
)
) solution is possible.
Examples:
>(stream->list (stream-take (cycle-streams (stream 123)(stream "a""b"))8))
'((1."a")(2."b")(3."a")(1."b")(2."a")(3."b")(1."a")(2."b"))
Hint:
Write a function that creates a stream that endlessly cycles through all the elements of a single, given stream. You can use a local environment to bind a variable to the original stream. Write a helper function that uses this local environment to refer to the original stream when it runs out of elements to cycle through.
Compose this function with your stream-zip to implement cycle-stream DO NOT USE SET. SHOULD BE A PURE FUNCTION

Step by Step Solution

There are 3 Steps involved in it

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!