Write solutions for below questions in scheme programming (.functional programming
)
1. Implement a function that returns the third element of a list.
2. Write a simple function that adds the first n integers. (e.g. (sum 5) returns 15).
3. Write a simple function that calculates the sum of a list of integers. e.g. (sum ‘(5 4 6)) returns 15. Implement a non-tail-recursive solution and a tail-recursive solution.
4. Write a Scheme max function that finds the largest number. The input should be a list of integers. The logic is discussed as follows.
boolean max(lst){
if (lst has only one element){
return the one element in lst
}
else if (car(lst) > max(cdr(lst))) {
return car(lst)
}
else {
return max(cdr(lst))
}
}
5. Arithmetic of Functions
We can define a higher-order function, i.e. functional form that accepts two functions as parameters and returns their sum,
As a running example, we consider two functions:
f(x) = x + 2
g(x) = 3x + 4
These are modeled, respectively, by the following Scheme functions:
(define (f x) (+ x 2))
(define (g x) (+ (* 3 x ) 4))
The higher-order function:
(define (plus func1 func2)
(lambda (x)
(+ (func1 x) (func2 x))
))
Note the use of lambda in order to return a nameless function. In essence, we are accepting two functions, func1 and func2, and returning a function that takes one parameter x and represents their sum. We can apply this functional form as follows:
((plus f g) 10) ; returns 46.
Or
(define (plus func1 func2 x)
(+ (func1 x) (func2 x)))
(plus f g 10) ; returns 46.
Define a function (form) that computes the difference between two functions.
6. Imagine an accounting routine used in a bookshop. It works on a list with sublists, which look like this:
Order Number Book Title and Author Quantity Price per Item
34587 Learning Python, Mark Lutz 4 40.95
98762 Programming Python, Mark Lutz 5 56.80
77226 Head First Python, Paul Barry 3 32.95
Write a PURE Python function, which returns the grand sale total in dollar amount. The only parameter to the function is the list, and i/o should be in the main method. PLEASE DO NOT USE For loop except if list comprehension is used.