aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDave Love2000-01-30 13:19:09 +0000
committerDave Love2000-01-30 13:19:09 +0000
commit63744c0ff5f6b7961f2c1c3f4069a11bf634abc1 (patch)
tree3853452a989450e802128f5c6753d3aa4790bb83
parent4b265472d682bf2ae1ee2eec288cbefbf8fa95e1 (diff)
downloademacs-63744c0ff5f6b7961f2c1c3f4069a11bf634abc1.tar.gz
emacs-63744c0ff5f6b7961f2c1c3f4069a11bf634abc1.zip
Revert last change.
-rw-r--r--lisp/emacs-lisp/cl-macs.el26
1 files changed, 26 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 63354c861ef..85287507f58 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1122,6 +1122,32 @@ Format is: (do* ((VAR INIT [STEP])...) (END-TEST [RESULT...]) BODY...)"
1122 (apply 'append sets))))))) 1122 (apply 'append sets)))))))
1123 (or (cdr endtest) '(nil))))) 1123 (or (cdr endtest) '(nil)))))
1124 1124
1125(defmacro dolist (spec &rest body)
1126 "(dolist (VAR LIST [RESULT]) BODY...): loop over a list.
1127Evaluate BODY with VAR bound to each `car' from LIST, in turn.
1128Then evaluate RESULT to get return value, default nil."
1129 (let ((temp (gensym "--dolist-temp--")))
1130 (list 'block nil
1131 (list* 'let (list (list temp (nth 1 spec)) (car spec))
1132 (list* 'while temp (list 'setq (car spec) (list 'car temp))
1133 (append body (list (list 'setq temp
1134 (list 'cdr temp)))))
1135 (if (cdr (cdr spec))
1136 (cons (list 'setq (car spec) nil) (cdr (cdr spec)))
1137 '(nil))))))
1138
1139(defmacro dotimes (spec &rest body)
1140 "(dotimes (VAR COUNT [RESULT]) BODY...): loop a certain number of times.
1141Evaluate BODY with VAR bound to successive integers from 0, inclusive,
1142to COUNT, exclusive. Then evaluate RESULT to get return value, default
1143nil."
1144 (let ((temp (gensym "--dotimes-temp--")))
1145 (list 'block nil
1146 (list* 'let (list (list temp (nth 1 spec)) (list (car spec) 0))
1147 (list* 'while (list '< (car spec) temp)
1148 (append body (list (list 'incf (car spec)))))
1149 (or (cdr (cdr spec)) '(nil))))))
1150
1125(defmacro do-symbols (spec &rest body) 1151(defmacro do-symbols (spec &rest body)
1126 "(dosymbols (VAR [OBARRAY [RESULT]]) BODY...): loop over all symbols. 1152 "(dosymbols (VAR [OBARRAY [RESULT]]) BODY...): loop over all symbols.
1127Evaluate BODY with VAR bound to each interned symbol, or to each symbol 1153Evaluate BODY with VAR bound to each interned symbol, or to each symbol