cursive Functions Without looking at the standard prelude, define the following library functions using recursion: o Decide if all logical values in a list are true: and :: [Bool] -> Bool

Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
icon
Related questions
Question

Hask

Recursive Functions
1. Without looking at the standard prelude, define the following library functions using
recursion:
o Decide if all logical values in a list are true:
and [Bool] -> Bool
o Concatenate a list of lists:
concat: [[a]] -> [a]
o Produce a list with n identical elements:
replicate :: Int -> a -> [a]
o Select the nth element of a list:
(!!) :: [a] -> Int -> a
o Decide if a value is an element of a list:
elem: Eq a => a => [a] -> Bool
Transcribed Image Text:Recursive Functions 1. Without looking at the standard prelude, define the following library functions using recursion: o Decide if all logical values in a list are true: and [Bool] -> Bool o Concatenate a list of lists: concat: [[a]] -> [a] o Produce a list with n identical elements: replicate :: Int -> a -> [a] o Select the nth element of a list: (!!) :: [a] -> Int -> a o Decide if a value is an element of a list: elem: Eq a => a => [a] -> Bool
Expert Solution
Step 1

Define the following library functions with recursion without consulting the definitions from the standard prelude: – and concatenate, replicate, and (!!) element

Notably, rather than employing explicit recursion, the majority of these functions are actually defined in the prelude using other library functions.

#Determining whether all of the logical values in a list are True: furthermore: [Bool] =Bool

nd :: [Bool] -> Bool

and [] = True

and (x:xs) = x && (and xs)

Example:

 

*C> and [True, True, True]

True

*C> and [True, False, True]

False

 

# Join several lists together: concatenation:

 [[a] ] → [a]

concat :: [[a]] -> [a]

concat [xs] = xs

concat (xs:xxs) = xs ++ (concat xxs)

Example:

 

*Ch6> concat [[1..10], [2,4], [20..25]]

[1,2,3,4,5,6,7,8,9,10,2,4,20,21,22,23,24,25]

steps

Step by step

Solved in 2 steps

Blurred answer
Knowledge Booster
Linked List Representation
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.
Recommended textbooks for you
Database System Concepts
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education