Fundamentals of CS I (CS151 2002F)

Lab: Records


Exercise 0: Preparation

a. Start DrScheme.

b. Make a copy of

c. Scan through that file to make sure that you understand all the procedures.

Exercise 1: Testing Compounds

a. Try the compoound examples given in the reading on records to see if they behave as I said they would.

b. Try a few of your own variations.

c. Explain why the attempted fake is not listed as a compound. Hint: Think about the order of the let and lambda in produce-type-mark.

Exercise 2: Filtering Compounds

Define a procedure, filter-by-color, that takes two arguments -- a list compounds of records of type compound and a color symbol -- and returns a list of the names of compounds of that color that are elements of compounds.

Exercise 3: Falsifying Compounds

a. Can you set the melting point of a compound to an illegal temperature? If so, how? If not, why not? (Note that there are other ways to modify compounds than to use the record's provided procedures.)

b. Find a way to make a vector that compound? identifies as a compound. You may not use make-compound or compound-copy to build your new vector. However, you may use either procedure to create a helper compound from which you copy values.

Exercise 4: A Shirt Record

Write a set of definitions for a record type, shirt, to be used in a program that keeps track of the inventory of a clothing store. Provide fields for catalog number, intended gender of wearer, size, color, price, and quantity in stock. Only the last two fields should be mutable.

Exercise 5: Sorting Shirts

Define a procedure that sorts a vector of records of type shirt into ascending order by catalog number.

Exercise 6: Searching Shirts

Adapt the binary search procedure so that it takes two arguments -- a vector vec of records of type shirt, sorted by the procedure defined in the previous exercise, and a catalog number catno -- and returns the entire record that contains that catalog number, if there is one in vec, or #f if there is no such record.




Monday, 27 November 2000 [Samuel A. Rebelsky]

Monday, 30 April 2001 [Samuel A. Rebelsky]

Tuesday, 3 December 2002 [Samuel A. Rebelsky]


Disclaimer: I usually create these pages on the fly, which means that I rarely proofread them and they may contain bad grammar and incorrect details. It also means that I tend to update them regularly (see the history for more details). Feel free to contact me with any suggestions for changes.

This document was generated by Siteweaver on Tue Dec 3 09:32:05 2002.
The source to the document was last modified on Tue Dec 3 09:32:00 2002.
This document may be found at

You may wish to validate this document's HTML ; Valid CSS! ; Check with Bobby

Samuel A. Rebelsky,