1 Practice Abstracting
2 Practice with map and filter

Problem Set 6

Language: Intermediate Student with lambda
Due: 11:59 PM Thursday, Feb. 17

1 Practice Abstracting

This problem starts from a modified version of the solution to a Problem Set 4 problem. To get the modified version,
  1. Click the EECS 111 Handin button.

  2. Select Problem Set 6 in the Assignment drop-down menu.

  3. Check the Retrieve checkbox.

The retrieved file contains the data definitions for person and database, as well as definitions and tests of the create-database and create-database-from-list functions. Add your code to this file and submit the whole thing when you’re done.

Note there is a slight change from Problem Set 4 in the definition of create-database: the relative order of the function’s parameters is flipped, making the person argument the first argument instead of the second. With this change, the definition of create-database-from-list closely resembles the following definition of sum.

  ; sum: list-of-number -> number
  ; Produces the sum of the given numbers
  (define (sum lon)
   (cond [(empty? lon) 0]
         [(cons? lon) (+ (first lon) (sum (rest lon)))]))
  
  (check-expect (sum empty) 0)
  (check-expect (sum (list 2 5 -1 3)) 9)

Abstract the common parts of these definitions of create-database-from-list and sum into a new function called reduce. Redefine create-database-from-list and sum in terms of reduce.

2 Practice with map and filter

Use map and filter, along with lambda, to define the following functions.

  ; pts-north : posn list-of-posn -> list-of-posn
  ; returns the posns from lop that are north of p,
  ; that is, whose y-coordinate is greater than p's y-coordinate
  (define (pts-north p lop) ---)
  
  ; build-straight-line : num list-of-number -> list-of-posn
  ; returns a list of posns where the x-coordinate is n and
  ; the y-coordinate is a number in lon
  ; e.g., (build-straight-line 2 (list 1 2 3))
  ; should be (list (make-posn 2 1) (make-posn 2 2) (make-posn 2 3))
  (define (build-straight-line n lon) ---)