Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Haskell: A higher-order function unfold can be defined as follows to encapsulate a pattern of recursion for producing a list: unfold p htx px =[]

image text in transcribed

Haskell: A higher-order function unfold can be defined as follows to encapsulate a pattern of recursion for producing a list: unfold p htx \px =[] otherwise = h x : unfold p h t (tx) That is, the function unfold p h t produces the empty list if the predicate p is true of the argument, and otherwise produces a non-empty list by applying the function h to give the head, and the function t to generate another argument that is recursively processed in the same way to produce the tail of the list. For example, a function intabin (to convert integers to binary numbers) can be written as follows: ntabin-unfold (so(mod' 2) (div'2) Note: putting function names mod and div inside back quotes allows them to be used infix] Define the following functions using unfold: a) map f b) iterate f, where iterate fx produces a list by applying the function ftox an increasing number of times, as follows terate fx lx,fx,ffx),f of f x),. c) repHalve, where repHalve I takes list l, and returns a list of lists containing the elements of I, so that the first list contains half of I's elements (if I's length is odd, including the odd element), the next contains half of the remaining elements, and so on For example, repHalve [1 2.3.4, 5 6 7 8 9, 10 11, 12, 13, 14, 15] should return [[1,24.5 6,7,8] [9,1 11,12] [13 14],[15]] Haskell: A higher-order function unfold can be defined as follows to encapsulate a pattern of recursion for producing a list: unfold p htx \px =[] otherwise = h x : unfold p h t (tx) That is, the function unfold p h t produces the empty list if the predicate p is true of the argument, and otherwise produces a non-empty list by applying the function h to give the head, and the function t to generate another argument that is recursively processed in the same way to produce the tail of the list. For example, a function intabin (to convert integers to binary numbers) can be written as follows: ntabin-unfold (so(mod' 2) (div'2) Note: putting function names mod and div inside back quotes allows them to be used infix] Define the following functions using unfold: a) map f b) iterate f, where iterate fx produces a list by applying the function ftox an increasing number of times, as follows terate fx lx,fx,ffx),f of f x),. c) repHalve, where repHalve I takes list l, and returns a list of lists containing the elements of I, so that the first list contains half of I's elements (if I's length is odd, including the odd element), the next contains half of the remaining elements, and so on For example, repHalve [1 2.3.4, 5 6 7 8 9, 10 11, 12, 13, 14, 15] should return [[1,24.5 6,7,8] [9,1 11,12] [13 14],[15]]

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Databases Illuminated

Authors: Catherine M. Ricardo

1st Edition

0763733148, 978-0763733148

More Books

Students also viewed these Databases questions

Question

How to add markers to maps

Answered: 1 week ago