comparison man/cl.texi @ 27487:9304a93329d1

Remove dotimes, dolist.
author Dave Love <fx@gnu.org>
date Fri, 28 Jan 2000 22:42:15 +0000
parents ee242fddb1ab
children ead47a92d9d0
comparison
equal deleted inserted replaced
27486:bbeb4a727b7b 27487:9304a93329d1
968 * Assignment:: The `psetq' form 968 * Assignment:: The `psetq' form
969 * Generalized Variables:: `setf', `incf', `push', etc. 969 * Generalized Variables:: `setf', `incf', `push', etc.
970 * Variable Bindings:: `progv', `lexical-let', `flet', `macrolet' 970 * Variable Bindings:: `progv', `lexical-let', `flet', `macrolet'
971 * Conditionals:: `case', `typecase' 971 * Conditionals:: `case', `typecase'
972 * Blocks and Exits:: `block', `return', `return-from' 972 * Blocks and Exits:: `block', `return', `return-from'
973 * Iteration:: `do', `dotimes', `dolist', `do-symbols' 973 * Iteration:: `do', `do-symbols'
974 * Loop Facility:: The Common Lisp `loop' macro 974 * Loop Facility:: The Common Lisp `loop' macro
975 * Multiple Values:: `values', `multiple-value-bind', etc. 975 * Multiple Values:: `values', `multiple-value-bind', etc.
976 @end menu 976 @end menu
977 977
978 @node Assignment, Generalized Variables, Control Structure, Control Structure 978 @node Assignment, Generalized Variables, Control Structure, Control Structure
1922 @result{} (2 3 4 5) 1922 @result{} (2 3 4 5)
1923 @end example 1923 @end example
1924 1924
1925 @noindent 1925 @noindent
1926 In this example, the @code{my-dolist} macro is similar to @code{dolist} 1926 In this example, the @code{my-dolist} macro is similar to @code{dolist}
1927 (@pxref{Iteration}) except that the variable @code{x} becomes a true 1927 except that the variable @code{x} becomes a true
1928 reference onto the elements of the list. The @code{my-dolist} call 1928 reference onto the elements of the list. The @code{my-dolist} call
1929 shown here expands to 1929 shown here expands to
1930 1930
1931 @example 1931 @example
1932 (loop for G1234 on mylist do 1932 (loop for G1234 on mylist do
2056 same name as the function or macro. This does not occur in Emacs 2056 same name as the function or macro. This does not occur in Emacs
2057 Lisp, but this package provides @code{defun*} and @code{defmacro*} 2057 Lisp, but this package provides @code{defun*} and @code{defmacro*}
2058 forms which do create the implicit block. 2058 forms which do create the implicit block.
2059 2059
2060 The Common Lisp looping constructs defined by this package, 2060 The Common Lisp looping constructs defined by this package,
2061 such as @code{loop} and @code{dolist}, also create implicit blocks 2061 such as @code{loop}, also create implicit blocks
2062 just as in Common Lisp. 2062 just as in Common Lisp.
2063 2063
2064 Because they are implemented in terms of Emacs Lisp @code{catch} 2064 Because they are implemented in terms of Emacs Lisp @code{catch}
2065 and @code{throw}, blocks have the same overhead as actual 2065 and @code{throw}, blocks have the same overhead as actual
2066 @code{catch} constructs (roughly two function calls). However, 2066 @code{catch} constructs (roughly two function calls). However,
2079 Otherwise, @code{nil} is returned. 2079 Otherwise, @code{nil} is returned.
2080 @end defspec 2080 @end defspec
2081 2081
2082 @defspec return [result] 2082 @defspec return [result]
2083 This macro is exactly like @code{(return-from nil @var{result})}. 2083 This macro is exactly like @code{(return-from nil @var{result})}.
2084 Common Lisp loops like @code{do} and @code{dolist} implicitly enclose 2084 Common Lisp loops like @code{do} implicitly enclose
2085 themselves in @code{nil} blocks. 2085 themselves in @code{nil} blocks.
2086 @end defspec 2086 @end defspec
2087 2087
2088 @node Iteration, Loop Facility, Blocks and Exits, Control Structure 2088 @node Iteration, Loop Facility, Blocks and Exits, Control Structure
2089 @section Iteration 2089 @section Iteration
2187 z) 2187 z)
2188 ((or (null xp) (null yp)) 2188 ((or (null xp) (null yp))
2189 (nreverse z)) 2189 (nreverse z))
2190 (push (f x y) z)) 2190 (push (f x y) z))
2191 @end example 2191 @end example
2192 @end defspec
2193
2194 @defspec dolist (var list [result]) forms@dots{}
2195 This is a more specialized loop which iterates across the elements
2196 of a list. @var{list} should evaluate to a list; the body @var{forms}
2197 are executed with @var{var} bound to each element of the list in
2198 turn. Finally, the @var{result} form (or @code{nil}) is evaluated
2199 with @var{var} bound to @code{nil} to produce the result returned by
2200 the loop. The loop is surrounded by an implicit @code{nil} block.
2201 @end defspec
2202
2203 @defspec dotimes (var count [result]) forms@dots{}
2204 This is a more specialized loop which iterates a specified number
2205 of times. The body is executed with @var{var} bound to the integers
2206 from zero (inclusive) to @var{count} (exclusive), in turn. Then
2207 the @code{result} form is evaluated with @var{var} bound to the total
2208 number of iterations that were done (i.e., @code{(max 0 @var{count})})
2209 to get the return value for the loop form. The loop is surrounded
2210 by an implicit @code{nil} block.
2211 @end defspec 2192 @end defspec
2212 2193
2213 @defspec do-symbols (var [obarray [result]]) forms@dots{} 2194 @defspec do-symbols (var [obarray [result]]) forms@dots{}
2214 This loop iterates over all interned symbols. If @var{obarray} 2195 This loop iterates over all interned symbols. If @var{obarray}
2215 is specified and is not @code{nil}, it loops over all symbols in 2196 is specified and is not @code{nil}, it loops over all symbols in