diff options
| author | Jonas Bernoulli <jonas@bernoul.li> | 2025-10-19 16:14:45 +0200 |
|---|---|---|
| committer | Jonas Bernoulli <jonas@bernoul.li> | 2025-10-19 16:14:45 +0200 |
| commit | 1f166d31f68f2148edba93279a636f109a67a16e (patch) | |
| tree | 14e98ebccca0c3282ef394bfd972d50bbc9e4f25 /cond-let.el | |
| parent | 79a16e1f2428f0f79f03250b987bc79cd37a029e (diff) | |
cond-let--prepare-clauses: Cosmetics
Diffstat (limited to 'cond-let.el')
| -rw-r--r-- | cond-let.el | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/cond-let.el b/cond-let.el index 065203c..2df7670 100644 --- a/cond-let.el +++ b/cond-let.el @@ -90,31 +90,29 @@ (defun cond-let--prepare-clauses (tag when let clauses) "Used by macros `cond-let*' and `cond-let'." (let (body) - (setq clauses (nreverse clauses)) - (while clauses - (let ((clause (pop clauses))) - (cond - ((vectorp clause) - (setq body - `((,(if (length= clause 1) 'let let) - ,(mapcar (lambda (vec) (append vec nil)) clause) - ,@body)))) - ((let (varlist) - (while (vectorp (car clause)) - (push (append (pop clause) nil) varlist)) - (push (cond - (varlist - `(,(if (length= varlist 1) 'cond-let--when-let when) - ,(nreverse varlist) - (throw ',tag ,(macroexp-progn clause)))) - ((length= clause 1) - (let ((a (gensym "anon"))) - `(let ((,a ,(car clause))) - (when ,a (throw ',tag ,a))))) - (t - `(when ,(pop clause) - (throw ',tag ,(macroexp-progn clause))))) - body)))))) + (dolist (clause (nreverse clauses)) + (cond + ((vectorp clause) + (setq body + `((,(if (length= clause 1) 'let let) + ,(mapcar (lambda (vec) (append vec nil)) clause) + ,@body)))) + ((let (varlist) + (while (vectorp (car clause)) + (push (append (pop clause) nil) varlist)) + (push (cond + (varlist + `(,(if (length= varlist 1) 'cond-let--when-let when) + ,(nreverse varlist) + (throw ',tag ,(macroexp-progn clause)))) + ((length= clause 1) + (let ((a (gensym "anon"))) + `(let ((,a ,(car clause))) + (when ,a (throw ',tag ,a))))) + (t + `(when ,(pop clause) + (throw ',tag ,(macroexp-progn clause))))) + body))))) body)) (defmacro cond-let* (&rest clauses) |
