Question
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
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 (0(1)) solution is possible. Examples: Hint: > (stream->list (stream-take (cycle-streams (stream 1 2 3) (stream "a" "b")) 8)) '((1 "a") (2. "b") (3. "a") (1. "b") (2. "a") (3. "b") (1. "a") (2. "b")) 1. 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. 2. Compose this function with your stream-zip to implement cycle-streams. It's possible to solve the problem "all-at-once," but I find the compositional solution easier to write and easier to understand.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started