Skip to content

Commit

Permalink
changed the implementation of extract-declarations as per Hans reques…
Browse files Browse the repository at this point in the history
…t - to be more readable/easier to reason about.
  • Loading branch information
alaa-alawi committed May 1, 2012
1 parent 835fabd commit 48516b6
Showing 1 changed file with 7 additions and 9 deletions.
16 changes: 7 additions & 9 deletions util.lisp
Expand Up @@ -228,15 +228,13 @@ determine whether CHAR must be escaped."
character set."
(escape-string string :test #'non-7bit-ascii-escape-char-p))

(defun extract-declarations (body)
(defun extract-declarations (forms)
"Given a FORM, the declarations - if any - will be extracted
from the head of the FORM, and will return two values the declarations,
and the remaining of FORM"
(loop for sexp = (first body) then (first forms)
for forms = (rest body) then (rest forms)
for declarations = nil
if (not (eq (first sexp) 'cl:declare))
do (return (values declarations
(append (if (null sexp) sexp (list sexp)) forms)))
else
do (push sexp declarations)))
(loop with declarations
for forms on forms
for form = (first forms)
while (eql (first form) 'cl:declare)
do (push form declarations)
finally (return (values (nreverse declarations) forms))))

0 comments on commit 48516b6

Please sign in to comment.