标签: allegro-cl

Quicklisp QUICKLOAD应该放在哪里?无处?

假设我在net.aserve和之上构建了一个应用程序bordeaux-threads.我的包声明可能如下所示:

(defpackage :my-package
  (:use :cl :net.aserve :bordeaux-threads)
  (:export …))
Run Code Online (Sandbox Code Playgroud)

我使用Quicklisp,所以(ql:quickload "aserve") (ql:quickload "bordeaux-threads")在编译我的包之前我在SLIME中运行,一切都很好.

当然,明天我再次启动SLIME,我必须记得QUICKLOAD在编译之前发出s,否则我就麻烦了.

可以把类似的东西

(eval-when (:compile-toplevel)
  (ql:quickload "aserve")
  (ql:quickload "bordeaux-threads"))
Run Code Online (Sandbox Code Playgroud)

在我的软件包的顶部 - 这是我为开发所做的 - 但我觉得强制一个包管理器对用户来说不是一个好主意.

还有更好的选择吗?

lisp common-lisp allegro-cl quicklisp

9
推荐指数
2
解决办法
3352
查看次数

使用实习生时如何在结构的访问器上执行setf

我想setf根据某个变量来选择结构的不同字段。我决定使用以下方法:

生成一个带有字段访问者名称的字符串:

(setq my-string (format nil "STRUCT-ESTADISTICAS-NUM-~S" x))
Run Code Online (Sandbox Code Playgroud)

然后将intern与funcall一起使用:

(funcall (intern my-string) *estadisticas*)
Run Code Online (Sandbox Code Playgroud)

该调用返回结构字段的正确值,但是如果我尝试setf修改此值,它会抱怨说:

(setf (funcall(intern my-string) *estadisticas*) 0)
Error: `(SETF FUNCALL)' is not fbound
Run Code Online (Sandbox Code Playgroud)

我可以理解为什么它不起作用,但是我找不到修改结构域的方法。任何的想法?谢谢。

lisp common-lisp allegro-cl

5
推荐指数
2
解决办法
1329
查看次数

在Common Lisp中处理并发文件访问

多个用户需要使用Common Lisp中创建的接口访问同一文件目录.发生这种情况时会出现许多竞争条件 例如,当多个用户添加或删除具有相同时间的文件时.在工作完成时,lisp中是否有办法"锁定"特定目录?这与多线程环境中的"synchronized"块类似,但我有单独的Lisp实例.我在Windows上使用Allegro CL.

编辑:对此问题的不同解决方案的想法也将不胜感激.

concurrency file-io common-lisp race-condition allegro-cl

4
推荐指数
1
解决办法
274
查看次数

内存 Common Lisp 中的对象地址

我试图弄清楚像 SLIME 或 SLY 这样的软件如何在 Inspector 中显示变量时获取变量的内存地址。我可以使用什么 Common Lisp 函数来以编程方式执行此操作?

例子:

在此处输入图片说明

这是#x100cab066d1这里感兴趣的。

sbcl common-lisp allegro-cl

1
推荐指数
1
解决办法
571
查看次数