Minor issue. You have to use flet or labels in CL to define a local function.
(flet ((double (x) (* 2 x))) (double 2))
In addition I would include intern and string for converting between symbol names and strings.
I'm not certain if unless and when(some more lisp macros) should have been included.