首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Quicklisp安装后使用iterate

使用Quicklisp安装后使用iterate
EN

Stack Overflow用户
提问于 2013-05-21 00:18:05
回答 3查看 937关注 0票数 5

当我使用Quicklisp ( (ql:quickload "iterate") )加载"iterate“包时,它看起来加载得很好,但没有一个函数真正工作。当我进入(iterate:iter (for i from 0 to 10) (collect i))时,我得到一个错误消息"The variable i is unbound“和几个样式警告消息COLLECT和FOR是未定义的函数,FROM是一个未定义的变量。如果我尝试使用ITER或ITERATE而不是ITERATE:ITER,也会发生同样的事情。我使用的是SBCL。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-05-21 04:26:29

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

代码语言:javascript
复制
(iterate:iter (iterate:for i from 1 to 10) (iterate:collect i))

Iterate是一个对use-package (或包定义中的:use )很方便的包。

票数 3
EN

Stack Overflow用户

发布于 2013-05-21 13:38:13

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

代码语言:javascript
复制
(defun old-package () (package-name *package*))

(defmacro i++ (&body body)
  (let ((old (package-name *package*))
        (new (package-name (find-package 'iterate))))
    (in-package #.(package-name (find-package 'iterate)))
    (prog1
        `(unwind-protect
              (progn
                (in-package ,new)
                (iter ,@body))
           (in-package ,old))
      (in-package #.(old-package)))))

现在,这将不起作用,因为主体的符号是在旧的(例如cl-user)包中定义的,然后一旦您尝试在iterate包中使用它们,它就完全崩溃了。但一定有办法..。除了替换iterate包中可能存在的所有符号之外...

票数 1
EN

Stack Overflow用户

发布于 2019-07-11 05:17:03

使用以下命令将其定义为包的一部分:use可能是风格方面最好的方式,但我只是使用了

代码语言:javascript
复制
(use-package "ITERATE")

而且它似乎工作得很好。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16653826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档