# Class 39: Variable-Arity Procedures

Back to Files. On to Discussion of Exam 2.

Held: Wednesday, 9 April 2003

Summary: Today we consider how and why to write procedures that can take different numbers of arguments in different situations.

Related Pages:

Notes:

• Are there questions on The Project Proposals?
• Don't forget: We meet in Saints' Rest on Friday. Try to arrive early if you can. We'll discuss exam 2.
• There's a cool Math/Education talk on Friday at noon in 2428. Extra credit for attending.
• Today we'll discuss some of your options in Computer Science for next semester or next year.

Overview:

• Definition of arity.
• Why have variable-arity procedures.
• How to write variable-arity procedures.
• Lab.

## Variable-Arity Procedures

• Def. Arity: The number of parameters a procedure expects.
• Some procedures naturally take varying numbers of parameters:
• `+` takes 0 or more parameters.
• `display` takes 1 or 2 parameters.
• `map` takes 2 or more parameters.
• It would be nice to be able to write our own procedures of variable arity (that is, varying numbers of parameters).
• Zero or more parameters:
```(lambda params
body)
```
• `params` is not parenthesized.
• In your body, treat `params` as a list.
• One or more parameters:
```(lambda (first . remaining)
body)
+ In your body, treating `remaining` as a list.
```
• Two or more parameters:
```(lambda (first second . remaining)
body)
+ In your body, treating `remaining` as a list.
```

## History

Thursday, 16 January 2003 [Samuel A. Rebelsky]

• First version, created mostly automatically from previous course.

Back to Files. On to Discussion of Exam 2.

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:30:11 2003.
The source to the document was last modified on Thu Jan 16 13:46:00 2003.
This document may be found at `http://www.cs.grinnell.edu/~rebelsky/Courses/CS151/2003S/Outlines/outline.39.html`.

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

Samuel A. Rebelsky, rebelsky@grinnell.edu