Fundamentals of Computer Science I (CSC-151.02 2000F)


Atoms and Lists

You may want to refer to the corresponding reading as you work on this lab.

Exercises

Exercise 0: Preparation

Start DrScheme

Exercise 1: A simple list

Call the cons procedure to create a list that has the number 1 as its first and only element. The result of your call should be (1).

Exercise 2: Interpreting compound conses

(cons 'alpha (cons 'beta (cons 'gamma (cons 'delta null))))

b. Check your answer by asking DrScheme to evaluate this expression.

Exercise 3: Using the list procedure

Start Scheme and call the procedure list, supplying the numerals 17 and 43 as operands. Describe the value returned by the procedure.

Exercise 4: Building a list of symbols

a. How would you call the list procedure to create a list containing the symbols alpha, beta, and gamma, in that order?

b. Verify your answer by entering the code in DrScheme.

Exercise 5: Empty lists

How would you invoke the list procedure to create an empty list?

Exercise 6: Repeated elements

Determine by experiment whether it is possible to create a list in which the same element occurs more than once?

Exercise 7: A small cdr

a. What is the cdr of a one-element list?

b. Verify your answer by experimentation.

Exercise 8: Extracing information from empty lists

It makes no sense to apply the car and cdr procedures to an empty list, because there's no way to split off the ``first element'' of a list that has no elements. What happens if you try it anyway? Find out by having DrScheme evaluate a deliberately incorrect procedure call.

Exercise 9: Extracting information from symbols

a. Does it make sense to apply car and cdr to values other than lists? Why or why not?

b. Determine what happens if you apply these procedures to symbolic values and numeric values.

Exercise 10: Compound lists

a. Create the list (e)

b. Create the list (d (e))

c. Create the lsit (b c)

d. Create the list (a (b c) (d (e)))

Exercise 11: It's all Greek to me

Use Scheme to give the name Greek-letters to the list constructed by the expression (list 'alpha 'beta (list 'gamma-1 'gamma-2) 'delta). Then call the length procedure to confirm that it has four elements.

Exercise 12: How long is emptiness?

Determine the length of the empty list.

Exercise 13: Checking your own length

a. Create a list of length 5. I don't care what's in the list.

b. Check your answer by having Scheme compute the length of that list.

Exercise 14: Length of compound lists

a. Create the list (a (b c) (d (e)))

b. What do you think the length of this list should be?

c. Experimentally determine the length of this list.

d. Explain the result.

Exercise 15: Reversing lists

Use Scheme to compute the reversal of the list whose elements are the symbols senior, junior, sophomore, and freshling, in that order.

Exercise 16: Reversing compound lists

a. If a list has another list as one of its elements, should reverse reverse that inner list as well as the outer one?

b. Find out by experiment what Scheme does.

Exercise 17: Joining lists

Use Scheme to find the result of stringing together a list with the symbols alpha and beta as its elements and a list with the numbers 1, 2, and 3 as its elements. How many elements does the resulting list have?

Exercise 18: Listing lists

a. Invoke the procedure list, applying it to the two lists that you strung together in the previous exercise: a list with the symbols alpha and beta as its elements and a list with the numbers 1, 2, and 3 as its elements.

b. How many elements does the resulting list have?

c. The answer to this question is different from the answer to the question at the end of the previous exercise -- why?

Exercise 19: Consing lists

a. Write a call to the procedure cons, applying it to our favorite two lists: a list with the symbols alpha and beta as its elements and a list with the numbers 1, 2, and 3 as its elements.

b. How many elements does the resulting list have?

c. Why is the answer to this question different from the answers to the questions at the end of the previous two exercises.

Exercise 20: Extracing elements

Write a call to the list-ref procedure that will extract the fourth element of the list (38 72 apple -1/3 sample) -- namely, the number -1/3.

Exercise 21: Wrapup

Quit DrScheme and log out of the workstation.

Notes

Today's lab currently lacks notes.

History

2 Septemer 1997 (John Stone)

31 March 2000 (John Stone)

Friday, 1 September 2000 (Samuel A. Rebelsky)


Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.

This page may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2000F/Labs/lists.html

Source text last modified Wed Sep 13 10:50:27 2000.

This page generated on Wed Sep 13 10:50:31 2000 by Siteweaver. Validate this page's HTML.

Contact our webmaster at rebelsky@grinnell.edu