Problem 1: Consider the following Scheme program: (define x 10) (define y 5) (define (f x y) (+ x (local [(define (f x) (* x y)) (define y 2)] (f (* x x))))) (f x y) For each occurrence of x and y identify its value, if possible. What is the result of this program? Problem 2: A peer-to-peer network (like GNUtella) consists of individual nodes that are connected to the rest of the network through one or more neighboring nodes. In a simplified model, each node has only one neighbor and a list of files that it can serve. Every node has a unique number representing its address. (define-struct file (name contents)) (define-struct node (address files neighbor)) A P2P-Network is one of: - empty - (make-node number list-of-File P2P-Network) A list-of-file is one of - empty - (cons File list-of-file) A File is a structure: (make-file symbol string) Develop the function P2P-search. The function consumes the name of file and a P2P-network and returns the address of the first node that is discovered to have the file or false if the file does not exist anywhere within the network. Optional: A copyright enforcement group wants to collect the addresses of all nodes on a P2P-Network that are hosting a particular file. Develop the function P2P-search-all, which is like P2P-search except that it returns the list of addresses of all nodes having a copy of the file being searched for. Problem 3: Develop the function sort-auction-records-by-bid. The function consumes a list of auction records and returns a list of auction records sorted in decreasing order by bid amount. An auction record is defined as follows: (define-struct auction (item id bid)) An auction record is a structure (make-auction String Number Number)