Common lisp 使用Quicklisp安装后使用迭代

Common lisp 使用Quicklisp安装后使用迭代,common-lisp,quicklisp,Common Lisp,Quicklisp,当我使用Quicklisp((ql:quickload“iterate”)加载“iterate”包时,它似乎加载得很好,但没有一个函数真正起作用。当我输入(iterate:iter(for I from 0 to 10)(collect I))时,我得到一个错误,说“变量I未绑定”,还有几个样式警告,说collect和for是未定义的函数,from是未定义的变量。如果我尝试使用ITER或ITERATE而不是ITERATE,也会发生同样的事情:ITER。我使用的是SBCL。子句的“运算符”也位于i

当我使用Quicklisp(
(ql:quickload“iterate”)
加载“iterate”包时,它似乎加载得很好,但没有一个函数真正起作用。当我输入
(iterate:iter(for I from 0 to 10)(collect I))
时,我得到一个错误,说“变量I未绑定”,还有几个样式警告,说collect和for是未定义的函数,from是未定义的变量。如果我尝试使用ITER或ITERATE而不是ITERATE,也会发生同样的事情:ITER。我使用的是SBCL。

子句的“运算符”也位于
iterate
包中:

(iterate:iter (iterate:for i from 1 to 10) (iterate:collect i))

Iterate是一个可以方便地
使用package
(或
:在包定义中使用
)的包。

这不是一个有效的解决方案,但我很想自己找到一个,所以,也许有人也会帮我:)


现在,这将不起作用,因为主体的符号是在旧的(
cl user
例如)包中定义的,一旦您尝试在
iterate
包中使用它们,所有的符号都会中断。但总有办法。。。除了替换
迭代
包中可能出现的所有符号…

将其定义为包的一部分外,使用:可能是最好的方式, 但我只是用了

(use-package "ITERATE")

而且似乎效果很好。

谢谢。我在文件的开头添加了一个
:use
,但它无法编译,并发出警告,说明包“还导出以下符号:(preprocess子句define子句config2…)和一个巨大的符号列表。在文件的开头,我有
(defpackage:foo(:use:cl:iterate))(在package:foo中)
。我读过的所有关于这一点的文档似乎都表明这应该是可行的,但出于某种原因,它并没有起作用。
(use-package "ITERATE")