The basic operation on a list is to walk along it, processing
one element at a time. We will illustrate the * design patterns*
for doing this with the ` length` function.

(length '(a b c)) -> 3

(defun length (lst) (let (n) ; let declares variables (setq n 0) ; setq is like = (while (consp lst) ; is it a cons (setq n (+ n 1)) (setq lst (rest lst)) ) n ))

public static int length (Cons lst) { int n = 0; while ( lst != null ) { n++; lst = rest(lst); } return n; }

public static int length (Cons arg) { int n = 0; for (Cons lst=arg; lst != null; lst = rest(lst) ) n++; return n; }