"Thinking about computing is one of the most exciting things the human mind can do".
The Little Schemer is worthy successor and will prove equally popular as texbooks for Scheme courses as well as companion texts for any complete introductory course in Computer Science.
Here is the emacs lisp style guide
;; good
(format "%s %d"
something
something-else)
;; bad
(format "%s %d"
something
something-else)
We must take into account each of these laws to be clear what each function returns, that we can resume or reuse of each output of a function and how to redefine new functions.
The primitive car is defined only for non-empty lists.
Violating the law we will not find any answer.
The primitive cdr is defined only for non-empty lists. The cdr of any non-empty lists is always another list.
So taking into account the first law we can combine cdr with car.
(car (cdr () ))
(cdr (car () ))
The primitive cons takes two arguments. The second argument to cons must be a list. The result is a list.
We can concatenate.
(cons () (cons () ()) )
The primitive null? (null in emacs lisp) is defined only for lists.
For other cases we will define a function.
The primitive eq? takes two arguments. Each must be a non-numeric atom.
For other cases we will define a function.
Find book here
"I learned more about LISP from this book than I have from any of the other LISP books I've read over the years... While other books will tell you the mechanis of LISP, they can leave you largely uninformed on the style of problem-solving for which LISP is optimized." --Gregg Williams , byte.