Contents Next: Defining Lisp functions Up: LISt Processing Previous: Setf

# Exercises

Note: A temptation if you are not used to computers is to sit down and try to work out these exercises in your head and be satisfied when you have reached some answer or other. DON'T! Use the Lisp interpreter to check your understanding. If you don't understand why the interpreter responds in some way, try to figure it out by playing with some slight variations of the problems. Some of the examples below (intentionally) generate interpreter errors. In such cases, think about why the error occurs and how you might change things to eliminate it.

1.
Evaluate the following:
a.
(first '(((a)) (b c d e)))
b.
(rest '(((((f))))))
c.
(first '(rest (a b c)))
d.
(first '(rest (rest (a b c))))
e.
(cons '(my life as) '(a dog))
f.
(append '(my life as) '(a dog))
g.
(list '(my life as) '(a dog))
h.
(cons (rest nil) (first nil))
i.
(abs (- (length (rest '(((a b) (c d))))) 5))
j.
(reverse (cons '(rest (reverse '(its gut na mur ta give captin)))))

2.
Using first and rest extract the atom ``jim'' from the following:
a.
b.
(captain (((jim) kirk)))
c.
(((((spock) asked) jim) if) he was all right)
d.
(after (looking at the (lizard man) ((((jim))) asked for warp 9)))

3.
What is returned by each of the following expressions (assume they are evaluated in the given order)?
a.
(setf trek '(picard riker laforge worf))
b.
(cons 'data trek)
c.
trek
d.
(length (cons 'troi trek))
e.
(setf trek (cons 'data trek))
f.
(length (cons 'troi trek))

4.
Given the following definition:
```(setf mylist '((bush broccoli) (nixon watergate)
(letterman (viewer mail))
(you are no jack kennedy)
```
Construct the following with any of the functions you have learned so far.
a.