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-streams. If a problem asks you to write a pure function, you must not use set! or any form of mutable state in your solution. If you do, you will receive no credit.

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!