在公共Lisp中初始化计数器变量

在公共Lisp中初始化计数器变量,lisp,common-lisp,Lisp,Common Lisp,我想在公共Lisp函数中使用一个变量作为计数器,从所需的数字开始,在循环中使用 (defun x(c) (setq i 4) (loop while condition do ;do something (incf i))) 说明setq和incf不适用于此。在clisp中管理计数器变量的标准方法是什么?在中详细说明 (defun x(c) (环路 我从4岁开始 虽然 做 在Common Lisp中,您需要定义变量。变量i未定义。那是个错误 (de

我想在公共Lisp函数中使用一个变量作为计数器,从所需的数字开始,在循环中使用

(defun x(c)
   (setq i 4)
   (loop while condition do 
        ;do something
        (incf i)))
说明
setq
incf
不适用于此。在clisp中管理计数器变量的标准方法是什么?

在中详细说明

(defun x(c)
(环路
我从4岁开始
虽然
做

在Common Lisp中,您需要定义变量。变量
i
未定义。那是个错误

(defun x (c)
   (setq i 4)                 ; undefined variable i
   (loop while condition do 
        ;do something
        (incf i)))            ; undefined variable i
定义变量:

CL-USER 9 > (defun x (c)
              (let ((i 4))     ; defining/binding local variable i
                (loop while (< i 10) do
                      (print i)
                      (incf i))))
X

CL-USER 10 > (x :foobar)

4 
5 
6 
7 
8 
9 
NIL
CL-USER 9>(defun x(c)
(let((i4));定义/绑定局部变量i
(循环时((x:foobar)
4.
5.
6.
7.
8.
9
无
但正如coredump的另一个答案所示,
loop
提供了自己的方法来定义变量并对其进行迭代

CL-USER 9 > (defun x (c)
              (let ((i 4))     ; defining/binding local variable i
                (loop while (< i 10) do
                      (print i)
                      (incf i))))
X

CL-USER 10 > (x :foobar)

4 
5 
6 
7 
8 
9 
NIL