The Department of Computer Science & Engineering
cse@buffalo

CSE202: Programming in Lisp

Course
Grades
Email

Welcome

Policies
    Grades
    Inc
    Intgrty

Preface
Part I
  Chap 1
  Chap 2
  Chap 3
  XEmacs
  Chap 4
  Chap 5
  Chap 6
  Chap 7
  Chap 8
  Chap 9
Part II
  Chap 10
  Chap 11
  Chap 12
  Chap 13
  Chap 14
  Chap 15
  Chap 16
  Chap 17
  Chap 18
  Chap 19
  Chap 20
  Chap 21
  Chap 22
  Chap 23
Part III
  Chap 24
  Chap 25
  Chap 26
  Chap 27
  Chap 28
  Chap 29
  Chap 30
  Chap 31
  Chap 32
CHAPTER 16: RECURSION ON LISTS, PART 1---ANALYSIS
Corrections
  1. page 101, lines -6 - -3: Change
    
    > (in-package 'ch16)
    #<Package CH16 60227265>
    
    > (shadow 'length)
    T
    
    
    to
    
    > (defpackage ch16
        (:shadow length))
    #<The CH16 package>
    
    > :pa ch16
    >
    
    

  2. page 102, line -3: Change '() to nil

Notes
  1. Read Chapter 16

  2. Do the exercises of this chapter in the ch16 package, as instructed.

  3. Do Exercises 16.1 and 16.2

  4. Do Exercise 16.3. Use check-type from now on whenever it is appropriate.

  5. Do Exercises 16.4 and 16.5. Be sure to note what lisp:member returns, as discussed in Exercise 16.5.

  6. Load your util file, and do Exercise 16.6. Compare your definition of before with the one in Appendix A.

  7. Do Exercise 16.7 if you feel it would help.

  8. Do Exercises 16.8 and 16.9. The time function introduced in Exercise 16.9 can be very useful in developing large systems.

  9. Do Exercise 16.11. Compare your definition of equal-lelt with the one in Appendix A. This exercise is particularly important if you are doing Project P1.

  10. You needn't do Exercises 16.12 or 16.13, but do try out nth and nthcdr so you might remember them if they might be useful in the future.

  11. You needn't do Exercise 16.14, but think about how you would do it, and then look at the definition in Appendix A. Lispers often use an association list in the form of a list of two element lists in order to associate the second member of each sublist with the first. It is like an array, except that any Lisp element can be used as the index, and it is searched serially instead of randomly. For example, an association list of people's telephone extensions might be
    '((Stu 125) (Bill 112) (Deb 116) (Carl 115))
    

  12. Do Exercise 16.15, and submit the revised match.cl file. Please remember to revise the line "This file satisfies the exercises through Exercise ???"

    Also please note that matchlelt should return NIL if one argument list runs out before the other (i.e., if the two lists are of different lengths).

  13. Submit a file named ch16.cl. This file should have its code in the ch16 package (It should start with appropriate defpackage and in-package forms.), and it should have definitions of two functions:
    1. The function count as specified in Exercise 16.10.

    2. The function monthNumber which should take a symbol that looks like a month, spelled normally, and return the number of that month. If the argument is not a valid month (or not even a symbol), monthNumber should return NIL. You should use the function assoc and a quoted association list. (See Exercise 16.14, and the discussion of it above.) Here are some example uses of a correct monthNumber:
      CH16(58): (monthNumber 'April)
      4
      CH16(59): (monthNumber 'December)
      12
      CH16(60): (monthNumber 'Adar)
      NIL
       

  14. When you've sumbitted correct Exercises through this chapter, you will have earned a grade of C-.

Next

Copyright © 1999, 2000 by Stuart C. Shapiro. All rights reserved.

Stuart C. Shapiro <shapiro@cse.buffalo.edu>