OCaml Code: Attached are images of the instructions. Below is the skeleton code that must be used to produce the example output. Make sure to use the skeleton code to add all the functions needed that is mentioned in the instructions attached. Make sure to attach screenshots of the code and output. I need to make sure the code works. streams.ml type 'a str = Cons of 'a * ('a stream) | Nil and 'a stream = unit -> 'a str exception Subscript exception Empty let head (s :'a stream) : 'a = match s () with Cons (hd,tl) -> hd | Nil -> raise Empty let tail (s :'a stream) : 'a stream = match s () with Cons (hd,tl) -> tl | Nil -> raise Empty let null (s : 'a stream) = match s () with Nil -> true | _ -> false let rec take (n: int) (s: 'a stream) : 'a list = match n with n when n > 0 -> head s :: take (n - 1) (tail s) | 0 -> [] | _ -> raise Subscript let rec nth (n: int) (s: 'a stream) : 'a = match n with n when n > 0 -> nth (n - 1) (tail s) | 0 -> head s | _ -> raise Subscript let rec map (f: 'a -> 'b) (s:'a stream) : 'b stream = fun () -> Cons (f (head s), map f (tail s)) let rec filter (s: 'a stream) (f: 'a -> bool) : 'a stream = if f (head s) then fun () -> Cons (head s, filter (tail s) f) else filter (tail s) f let rec sieve (s: int stream) : int stream = fun () -> Cons(head s, sieve (filter (tail s) (fun x -> x mod (head s) <> 0))) let rec fromn (n: int) = fun () -> Cons (n, fromn (n + 1)) let rec fib n m = fun () -> Cons (n, fib m (n+m)) (* implement the streams and functions below *) let even : int -> bool = fun x -> true let odd : int -> bool = fun x -> true let squares : int stream = fun () -> Nil let fibs : int stream = fun () -> Nil let evenFibs : int stream = fun () -> Nil let oddFibs : int stream = fun () -> Nil let primes : int stream = fun () -> Nil let rev_zip_diff : 'a stream -> 'b stream -> ('b * 'a -> 'c) -> ('b * 'a * 'c) stream = fun a b f -> fun () -> Nil let rec printGenList : 'a list -> ('a -> unit) -> unit = fun l f -> () let rec printList : int list -> string -> unit = fun l f -> let oc = open_out f in close_out oc let rec printPairList : (int * int) list -> string -> unit = fun l f -> let oc = open_out f in close_out oc Example Output: even 2;; - : bool = true even 3;; - : bool = false odd 2;; - : bool = false odd 3;; - : bool = true take 10 squares;; - : int list = [1; 4; 9; 16; 25; 36; 49; 64; 81; 100] take 10 fibs;; - : int list = [0; 1; 1; 2; 3; 5; 8; 13; 21; 34] take 10 evenFibs;; - : int list = [0; 2; 8; 34; 144; 610; 2584; 10946; 46368; 196418] take 10 oddFibs;; - : int list = [1; 1; 3; 5; 13; 21; 55; 89; 233; 377] take 10 primes;; - : int list = [2; 3; 5; 7; 11; 13; 17; 19; 23; 29] take 5 (rev_zip_diff evenFibs oddFibs (fun (x,y) -> x - y));; - : (int * int * int) list = [(1, 0, 1); (1, 2, -1); (3, 8, -5); (5, 34, -29); (13, 144, -131)] printGenList ["how"; "the"; "turntables"] (fun s -> print_string (s ^ " "));; how the turntables - : unit = () printList [2; 4; 6; 8] "printList.txt";; (* "2 4 6 8 " *) printPairList [(2, 1); (3, 2); (4, 3)] "printPairList.txt";; (* "(2, 1) (3, 2) (4, 3) " *)
OCaml Code: Attached are images of the instructions. Below is the skeleton code that must be used to produce the example output. Make sure to use the skeleton code to add all the functions needed that is mentioned in the instructions attached. Make sure to attach screenshots of the code and output. I need to make sure the code works.
streams.ml
type 'a str = Cons of 'a * ('a stream) | Nil
and 'a stream = unit -> 'a str
exception Subscript
exception Empty
let head (s :'a stream) : 'a =
match s () with
Cons (hd,tl) -> hd
| Nil -> raise Empty
let tail (s :'a stream) : 'a stream =
match s () with
Cons (hd,tl) -> tl
| Nil -> raise Empty
let null (s : 'a stream) =
match s () with
Nil -> true
| _ -> false
let rec take (n: int) (s: 'a stream) : 'a list =
match n with
n when n > 0 -> head s :: take (n - 1) (tail s)
| 0 -> []
| _ -> raise Subscript
let rec nth (n: int) (s: 'a stream) : 'a =
match n with
n when n > 0 -> nth (n - 1) (tail s)
| 0 -> head s
| _ -> raise Subscript
let rec map (f: 'a -> 'b) (s:'a stream) : 'b stream =
fun () -> Cons (f (head s), map f (tail s))
let rec filter (s: 'a stream) (f: 'a -> bool) : 'a stream =
if f (head s)
then fun () -> Cons (head s, filter (tail s) f)
else filter (tail s) f
let rec sieve (s: int stream) : int stream =
fun () -> Cons(head s, sieve (filter (tail s) (fun x -> x mod (head s) <> 0)))
let rec fromn (n: int) = fun () -> Cons (n, fromn (n + 1))
let rec fib n m = fun () -> Cons (n, fib m (n+m))
(* implement the streams and functions below *)
let even : int -> bool = fun x -> true
let odd : int -> bool = fun x -> true
let squares : int stream = fun () -> Nil
let fibs : int stream = fun () -> Nil
let evenFibs : int stream = fun () -> Nil
let oddFibs : int stream = fun () -> Nil
let primes : int stream = fun () -> Nil
let rev_zip_diff : 'a stream -> 'b stream -> ('b * 'a -> 'c) -> ('b * 'a * 'c) stream =
fun a b f -> fun () -> Nil
let rec printGenList : 'a list -> ('a -> unit) -> unit =
fun l f -> ()
let rec printList : int list -> string -> unit =
fun l f ->
let oc = open_out f in
close_out oc
let rec printPairList : (int * int) list -> string -> unit =
fun l f ->
let oc = open_out f in
close_out oc
Example Output:
even 2;;
- : bool = true
even 3;;
- : bool = false
odd 2;;
- : bool = false
odd 3;;
- : bool = true
take 10 squares;;
- : int list = [1; 4; 9; 16; 25; 36; 49; 64; 81; 100]
take 10 fibs;;
- : int list = [0; 1; 1; 2; 3; 5; 8; 13; 21; 34]
take 10 evenFibs;;
- : int list = [0; 2; 8; 34; 144; 610; 2584; 10946; 46368; 196418]
take 10 oddFibs;;
- : int list = [1; 1; 3; 5; 13; 21; 55; 89; 233; 377]
take 10 primes;;
- : int list = [2; 3; 5; 7; 11; 13; 17; 19; 23; 29]
take 5 (rev_zip_diff evenFibs oddFibs (fun (x,y) -> x - y));;
- : (int * int * int) list =
[(1, 0, 1); (1, 2, -1); (3, 8, -5); (5, 34, -29); (13, 144, -131)]
printGenList ["how"; "the"; "turntables"] (fun s -> print_string (s ^ " "));;
how the turntables - : unit = ()
printList [2; 4; 6; 8] "printList.txt";; (* "2 4 6 8 " *)
printPairList [(2, 1); (3, 2); (4, 3)] "printPairList.txt";; (* "(2, 1) (3, 2) (4, 3) " *)
![To start, write a function called even which returns true if the integer argument is even, false oth-
erwise. Write a function called odd which returns true if the integer argument is odd, false otherwise.
Now create five streams: squares, fibs, evenFibs, oddFibs, and primes. squares contains the
sequence of perfect squares starting from 1. You may find the map function helpful to create such
a stream. Then, create a stream called fibs that contains the Fibonacci sequence. evenFibs and
oddFibs are similar but they only contain the even Fibonacci numbers and odd Fibonacci numbers,
respectively. The last stream is primes, which has the sequence of prime numbers.
Write a function called rev_zip_diff which will zip together two streams in reverse order (hint:
take a look at how the zip function works that we went over in class) and leverage an arbitrary
difference function to obtain the difference of every two elements. rev_zip_diff should have the
following type signature:
val zip
'a stream -> 'b stream -> ('b* 'a -> 'c) -> ('b * 'a * 'c) stream
You may wish to test rev_zip_diff by zipping together evenFibs and oddFibs and a function
that gets the integer difference, and then create a concrete list with the take function.
4 Generalized Printing
You are tasked with creating generalized list printing functions. Write a function called print GenList
which takes a list and a printing function f and applies the function to each element of the list
recursively. The function should have the following type signature:
val printGenList : 'a list -> ('a -> unit) -> unit
Create a function called printList that will pretty print an integer list. You will find the string
concatenation operator (^) and the string_of_int function useful. printList will take an integer](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2Fe7ddc10c-4670-40fd-b02c-6a60c5fcc2f2%2Ff6390fe2-6269-4114-bda5-a87c384ed06a%2F4328hhh_processed.png&w=3840&q=75)
![list followed by a string. The string is the name of the output file that you will write the list
to. This function should leverage printGenList and provide an anonymous function (the fun ...
->... construct) that will do the appropriate pretty printing to the output file. This anonymous
function should print the element of the list and then a space character. printList should have the
following type signature:
val printList: int list -> string -> unit
Create a function called printPairList that will pretty print a list consisting of integer pairs.
The function will take an (int *int) list followed by a string. The string is the name of the
output file that you will write the list to. printPairList should leverage print GenList and
provide an anonymous function (the fun ->... construct) that will do the appropriate
pretty printing. This anonymous function should print an open parenthesis, the first element of
the pair, a comma, a space, the second element of the pair, and then a close parenthesis followed
by a space. printPairList should have the following type signature:
val printPairList : (int int) list -> string -> unit](/v2/_next/image?url=https%3A%2F%2Fcontent.bartleby.com%2Fqna-images%2Fquestion%2Fe7ddc10c-4670-40fd-b02c-6a60c5fcc2f2%2Ff6390fe2-6269-4114-bda5-a87c384ed06a%2Fr7n3fm5_processed.png&w=3840&q=75)
![](/static/compass_v2/shared-icons/check-mark.png)
Trending now
This is a popular solution!
Step by step
Solved in 3 steps
![Blurred answer](/static/compass_v2/solution-images/blurred-answer.jpg)
What the hell is this? You just copied the skeleton code given. Please read the instructions and make sure to produce the example output. Make sure to give the correct code and include screenshots of the example output. I included the instructions again.
![To start, write a function called even which returns true if the integer argument is even, false oth-
erwise. Write a function called odd which returns true if the integer argument is odd, false otherwise.
Now create five streams: squares, fibs, evenFibs, oddFibs, and primes. squares contains the
sequence of perfect squares starting from 1. You may find the map function helpful to create such
a stream. Then, create a stream called fibs that contains the Fibonacci sequence. evenFibs and
oddFibs are similar but they only contain the even Fibonacci numbers and odd Fibonacci numbers,
respectively. The last stream is primes, which has the sequence of prime numbers.
Write a function called rev_zip_diff which will zip together two streams in reverse order (hint:
take a look at how the zip function works that we went over in class) and leverage an arbitrary
difference function to obtain the difference of every two elements. rev_zip_diff should have the
following type signature:
val zip
'a stream -> 'b stream -> ('b* 'a -> 'c) -> ('b * 'a * 'c) stream
You may wish to test rev_zip_diff by zipping together evenFibs and oddFibs and a function
that gets the integer difference, and then create a concrete list with the take function.
4 Generalized Printing
You are tasked with creating generalized list printing functions. Write a function called print GenList
which takes a list and a printing function f and applies the function to each element of the list
recursively. The function should have the following type signature:
val printGenList : 'a list -> ('a -> unit) -> unit
Create a function called printList that will pretty print an integer list. You will find the string
concatenation operator (^) and the string_of_int function useful. printList will take an integer](https://content.bartleby.com/qna-images/question/e7ddc10c-4670-40fd-b02c-6a60c5fcc2f2/d52f3cd1-8874-40df-ab96-669ab2a15531/3trh4q_thumbnail.png)
![To start, write a function called even which returns true if the integer argument is even, false oth-
erwise. Write a function called odd which returns true if the integer argument is odd, false otherwise.
Now create five streams: squares, fibs, evenFibs, oddFibs, and primes. squares contains the
sequence of perfect squares starting from 1. You may find the map function helpful to create such
a stream. Then, create a stream called fibs that contains the Fibonacci sequence. evenFibs and
oddFibs are similar but they only contain the even Fibonacci numbers and odd Fibonacci numbers,
respectively. The last stream is primes, which has the sequence of prime numbers.
Write a function called rev_zip_diff which will zip together two streams in reverse order (hint:
take a look at how the zip function works that we went over in class) and leverage an arbitrary
difference function to obtain the difference of every two elements. rev_zip_diff should have the
following type signature:
val zip
'a stream -> 'b stream -> ('b* 'a -> 'c) -> ('b * 'a * 'c) stream
You may wish to test rev_zip_diff by zipping together evenFibs and oddFibs and a function
that gets the integer difference, and then create a concrete list with the take function.
4 Generalized Printing
You are tasked with creating generalized list printing functions. Write a function called print GenList
which takes a list and a printing function f and applies the function to each element of the list
recursively. The function should have the following type signature:
val printGenList : 'a list -> ('a -> unit) -> unit
Create a function called printList that will pretty print an integer list. You will find the string
concatenation operator (^) and the string_of_int function useful. printList will take an integer](https://content.bartleby.com/qna-images/question/e7ddc10c-4670-40fd-b02c-6a60c5fcc2f2/d52f3cd1-8874-40df-ab96-669ab2a15531/iiqz1kp_thumbnail.png)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![Database System Concepts](https://www.bartleby.com/isbn_cover_images/9780078022159/9780078022159_smallCoverImage.jpg)
![Starting Out with Python (4th Edition)](https://www.bartleby.com/isbn_cover_images/9780134444321/9780134444321_smallCoverImage.gif)
![Digital Fundamentals (11th Edition)](https://www.bartleby.com/isbn_cover_images/9780132737968/9780132737968_smallCoverImage.gif)
![C How to Program (8th Edition)](https://www.bartleby.com/isbn_cover_images/9780133976892/9780133976892_smallCoverImage.gif)
![Database Systems: Design, Implementation, & Manag…](https://www.bartleby.com/isbn_cover_images/9781337627900/9781337627900_smallCoverImage.gif)
![Programmable Logic Controllers](https://www.bartleby.com/isbn_cover_images/9780073373843/9780073373843_smallCoverImage.gif)