Как принято, оптимизацию надо производить тогда,
когда уже все написано и выявлены тонкие места.
Если это так, то лучше писать:
(defun message (text)
(declare (simple-string text))
...)
А если ещё используется sbcl, то нужно играться со speed и safety. С параметрами оптимизации у sbcl что-то неладное творится, оптимальный код генерируется, порой, при совершенно неожиданных комбинациях. Ну и если в CLOS не лезть и везде safety 0 использовать, то код получается весьма приличный.
"declaration identifier n. one of the symbols declaration, dynamic-extent, ftype, function, ignore, inline, notinline, optimize, special, or type; ___or a symbol which is the name of a type__; or a symbol which has been declared to be a declaration identifier by using a declaration declaration."
я так скрежещу зубами, что они быстро стачиваются. К сожалению, cltl2 устарел, в нём есть отличия от современного стандарта. Хотя для начала на эти отличия можно просто "забить".
Хакерской? Это как? Думаю, что PCL лучшая книга для начала, всем советую, кто хочет изучать лисп. Если до этого не сильно знаком с программированием, то Gentle Introduction to Symbolic Computation.
А cltl2 иначе, как справочник (с чем лучше справляется clhs), использовать трудно. Там же тебя не научат, как писать на лиспе (стиль и традиции).