Class 07: Symbols and Lists

Back to Starting Scheme. On to Numbers.

Held: Wednesday, 29 January 2003

Summary: Today we consider two of Scheme's most important types of data: symbolic values and lists.

Related Pages:

Due

Assignments

Notes:

• Students in many classes need to use MathLAN computers. Do you have any opinions on allowing other students in this room during our class? The CS153 class from 10:00-10:50 has given permission for you to do homework in 2417 during their class.
• It appears that the W3C HTML validator has been down today. I'll be sympathetic to invalid HTML, but you should try to correct it ASAP (it's up now).

Overview:

Symbols

• A key aspect of Scheme.
• Symbols are seful when you want to represent something atomically (as an idea that can't be pulled apart).
• The easiest way to build a symbol is with the quote operation.
> 'a
a
> a
reference to undefined identifier: a
> (quote a)
a

• Note that symbols and variables are different
> (define a 12)
> a
12
> 'a
a

• As you might be able to tell, the quote means Take it literally; don't attempt to interpret or evaluate it.
• Note that quote can be used for other types of values, although I will usually discourage you from doing so.

Lists

• The core of Scheme.
• Lists are ordered collections of information.
• Dynamic: Lists can "grow" and "shrink"
• Or at least you can build larger or smaller lists from other lists.
• Lists look a lot like procedure application (intentionally).
• The simplest list: the empty list is null or ().
• You extend lists at the front (or, more precisely, build new lists) with
(cons thing-for-the-front rest-of-the-list)

• For example,
> (cons 'a null)
(a)
> (cons 'b (cons 'a null))
(b a)

• You can also create lists with list.
> (list 'a 'b 'c)
(a b c)

• You extract parts of lists with three operations (we'll reflect on the naming later in the semester):
• car: get the initial element of the list.
• cdr: get all but the initial element of the list.
• list-ref: get the ith element of the list.
• One disadvantage: Scheme lists look a lot like procedure applications, so it's sometimes hard for beginning programmers to tell what's going on.
• You can always tell by context, but it takes some time to get used to contexts.

Lab

• Do the lists lab.
• We'll try to use the last five minutes of class to reflect.
• You may have to complete the remainder of the lab on your own.

History

Thursday, 16 January 2003 [Samuel A. Rebelsky]

• First version, created mostly automatically from previous course.

Wednesday, 29 January 2003 [Samuel A. Rebelsky]

• Added introductory notes.
• Added more notes about the quote operation.

Back to Starting Scheme. On to Numbers.

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 May 6 09:29:36 2003.
The source to the document was last modified on Wed Jan 29 11:48:52 2003.
This document may be found at http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2003S/Outlines/outline.07.html.

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

Samuel A. Rebelsky, rebelsky@grinnell.edu