Due: Thurs, March 13 --- Bring solutions, on paper, to class. --------------------------------- 1. Write the procedure (dupla n L) that creates a list of by replacing each data expression of L with n. ex. (dupla 'a '(1 2 3)) -> '(a a a) (dupla 'a '()) -> '() (dupla '(1 2) '(a b c)) -> '( (1 2) (1 2) (1 2)) (define dupla (lambda (n L) (cond ((null? L) L) (else (cons n (dupla n (cdr L))))))) ; ( define dupla ; ( lambda ( a l ) ; ( cond ( ( null? l ) l ) ; ( else ( cons a ; ( dupla a ( cdr l ) ) ) ; ) ; ) ; ) ; ) ; ; ( dupla 'a '( 1 2 3 ) ) 2. Complete the function double that inputs a data expression a and a list L and doubles the first occurrence of the data expression a in the list L. ex. (double 'cat '(dog cat rat)) -> '(dog cat cat rat) ( define double ( lambda ( a l ) ( cond ( ( null? l ) '() ) ( ( equal? ( car l ) a ) ( cons a ( cons a ( double a ( cdr l ) ) ) ) ) ( else ( cons ( car l ) ( double a ( cdr l ) ) ) ) ) ) ) 3. Write the procedure (atom-occur? n L) that returns #t if atom n occurs anywhere within list L; otherwise #f. ex. (atom-occur? 'a '( )) -> #f (atom-occur? 'a '( d a d )) -> #t (atom-occur? 2 '( 1 (((2) 3)))) -> #t (atom-occur? 5 '( (1) (2) 3 )) -> #f (atom-occur? 'a '( () a)) -> #t ( define inarray2 ( lambda ( needle haystack ) ( cond ( ( null? haystack ) false ) ( ( list? ( car haystack ) ) ( inarray2 needle ( car haystack ) ) ) ( ( equal? needle ( car haystack ) ) true ) ( else ( inarray2 needle ( cdr haystack ) ) ) ) ) ) 4. Write the function (removeDuplicates L) where L is a list. This function should remove all the duplicate data expressions in list L. You may use the (mymember? n L) that you wrote for homework. ex. (removeDuplicates '(a b a c)) -> '(b a c) (removeDuplicates '((a b) (a b) d)) -> '((a b) d) (removeDuplicates '(1 2 3 4 5 )) -> '(1 2 3 4 5) (define removeDuplicates (lambda (L)