Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

Function 4: my-map a. In CLISP define your own function that duplicates the func

ID: 3884929 • Letter: F

Question

Function 4: my-map

a. In CLISP define your own function that duplicates the functionality of mapcar from the standard library. You may not use the built-in mapcar function as a helper function. Your implementation must be recursive.

b. In Racket define your own function that duplicates the functionality of map from the standard library. You may not use the built-in map function as a helper function. Your implementation must be recursive.
• Input: The input to my-map is a function that takes a single argument and a homogeneous list of elements of the same data type compatible with the procedure. Note: the function argument can be named or anonymous (lambda).

• Output: A new list of the original elements with the same procedure applied to each.

• Examples:

> (my-map sqrt '(9 25 81 49))

'(3 5 9 7)

> (my-map add1 '(6 4 8 3))

'(7 5 9 4)

> (my-map (lambda (n) (* n n)) '(5 7))

'(25 49)

> (my-map even? '(2 5 7 12))

'(#t #f #f #t)

Explanation / Answer

b.

> (define (my-map f lst)
(cond
[(empty? lst) empty]
[else (cons (f (first lst))
(my-map f (rest lst)))]))

> (my-map sqrt(list 1 4 9 16))


> (my-map sqr(list 1 2 3))
'(1 4 9)