问题标签 [allegro-cl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
common-lisp - 我可以在 SBCL 或 CLISP 中使用 Allegro Common Lisp 中制作的 C++ Wrappers
我目前正在学习在 Lisp 中包装 C++ 代码,以便可以从 Lisp 调用 C++ 函数。我正在学习 SWIG,我想了解更多关于 SWIG 的 Allegro Common Lisp 部分的信息。我现在正在使用 Allegro 的 Express(免费)添加,它的堆限制为 50mb,因此它阻止我加载用于 Lisp、GSLL 的 GNU 科学库。
我想制作一个巨大的应用程序,它将使用来自 GSLL 的代码、我用 SWIG 创建的 OpenCV 的 Lisp 包装器以及我用 SWIG 创建的 C++ 代码的其他 Lisp 包装器,我希望能够使用所有的 OpenCV来自 Lisp 和 SWIG 的 Allegro Common Lisp C++ 支持的 C++ 接口函数似乎是最完整的(如果我错了,请纠正我)和包装大多数 C++ 函数的最佳方式。(我这样说是因为SWIG 手册的 Allegro Common Lisp 部分比Common Lisp 部分大得多。
我在 Allegro Common Lisp Express 版本中为 Lisp 创建 OpenCV C++ 绑定,并以某种方式将它们移至 SBCL 或 CLISP,这样我就可以在没有堆限制或 Allegro/ 的 Lisp 实现中使用我的所有 GSLL 代码和我的 OpenCV 包装器SWIG 合作伙伴关系认为我只使用 Allegro 制作的 SWIG C++ 包装器和 Allegro Common Lisp 中的 SWIG Allegro 教程。
如果我错误地假设 Allegro Common Lisp 的支持比其他实现更完整,或者如果有更好的方法来包装所有 OpenCV 的 C++ 函数,或者 OpenCV 的 C 接口与 C++ 一样完整,请纠正我界面,我可以包装它。
请在相关时引用在线资源。
lisp - Allegro CL Free Express Edition 9.0 中的函数定义应该写在哪里?
我应该在哪里写函数定义defun
?在调试窗口或编辑器中?我曾尝试在这两个地方编写定义,但出现错误。
common-lisp - 有没有办法将 AllegroGraph 与 ACL 以外的 Lisp 一起使用?
到目前为止,我只阅读了文档,它说为了使用 Lisp 客户端,我必须使用 ACL。ACL,Express 版本的有效期为 30 天。由于我什至还没有考虑任何商业用途,所以我不太可能在可观察的未来购买它。
有人用其他 Lisp 尝试过吗?许可证是否允许?(我的猜测是“是”,因为例如 Python 客户端当然不需要任何特殊购买。)
emacs - 在 ALLEGRO-CL 免费版中安装 quicklisp 库
在 Ubuntu Raring 上的 Emacs 中。我在 Emacs 中加载了 SBCL,因为我一直在使用它。在键入 M-- Mx slime 以加载 ACL 后,我键入 (ql:quickload "ieee-floats") 以在 emacs 中新安装的 ACL 上加载我的第一个库并收到此错误:
我的 ACL asdf: central-registry的前几行是:
所以 acl 只是查看第一个文件并停止。同样在 ACL 中的 asdf: central-registry中,它列出了根目录中的所有文件以及文件夹,但在 SBCL 中,它只列出了 quicklisp/dist/software 中的所有根文件夹,而 SBCL 用于安装 quicklisp 库 i/e
ACL 列出所有根文件夹文件
SBCL'S - 仅列出根文件夹
并且 sbcl 和 acl 初始化文件包含相同的内容:
python - 通过套接字通信的 lisp 和 python 程序中的计时问题
我正在尝试让 python 程序和 Allegro Common Lisp 程序通过套接字进行通信。现在,我正在尝试设置一个监听连接的 Lisp 服务器,让一个 python 客户端连接到服务器,然后从客户端向服务器发送一条简单的消息。Lisp 服务器如下所示:
python 客户端如下所示:
因为我想让多条消息通过这个流,我在服务器端监听传入的数据,然后回显它。但是,当我使用注释的 sleep 命令运行它时,我注意到了一个问题。输出看起来像这样:
换句话说,它实际上并没有回显数据(在我的例子中,“(列表 AB)”)。如果我取消注释 sleep 命令(在连接启动和数据发送之间引入一些延迟),输出如下所示:
我不确定为什么会这样。有人对此有解决方案吗?为多次数据交换重用同一个套接字连接是不是一个坏主意?如果我删除整个循环宏调用(并因此使其成为一次性交换),则接收到的数据没有任何问题并正确回显
编辑 1:即使注释了 sleep 命令,最后一条语句也是正确的。
search - lisp 哈希符号替换返回值
我一直在尝试为图构建类似于广度优先树状结构的东西,其中包含来自给定节点的所有可能路径。我对算法没有问题,就像我对弹出的某种错误一样。下面是相关代码:
函数搜索树被称为 (search-tree my-graph '(A) '()) 它返回几乎所有我想要的东西,但是第一个终端节点被替换为 # 符号(它应该是 (J) )。这里可能是什么问题?
这就是返回值。
(A (B (D (E (H #))) (E (H (J)))) (C (F (H (J)) (I (J))) (G (I (J)))))
我尝试过跟踪代码,但我仍然不明白为什么 (J) 列表在递归中间用 # 符号交换。
nested - 嵌套的“defun”在 Allegro Common Lisp 中产生重复警告
我在 Common Lisp 中有一个通用的合并排序实现:我有不同的拆分和合并函数实现,并且对于拆分和合并函数的每个组合,我想构造一个合并排序函数。
- 任何拆分函数都将字符串列表作为输入并返回两个列表的列表:原始列表的两半。
- 任何合并函数都将两个排序列表作为输入并返回排序后的合并列表。
每个归并排序函数都是通过调用以下函数创建的:
我在merge-sort
里面定义make-merge-sort-function
是为了保持它的名字私有并避免破坏命名空间。
我的代码适用于几个 Common Lisp 实现(例如 Steel Bank Common Lisp):
- 我所有测试运行的输出都正确排序,
- 每个生成的合并排序函数都有不同的执行时间,表明使用了不同的拆分/合并组合。
所以,我假设我的代码是正确的。
但是,如果我使用 Allegro Common Lisp 运行程序,我会收到警告:
调用foo.lisp
的文件在哪里。make-merge-sort-function
因此,该程序工作正常,但它会在第一次调用之后的每次调用时打印一次此警告make-merge-sort-function
。如果我将merge-sort
函数设为全局函数(带有两个附加参数split-function
和merge-function
),那么警告就会消失。
我没有在 Allegro Common Lisp 中找到有关此警告含义的任何指示。我尝试过的其他实现(ABCL、CMUCL、CCL、CLISP、SBCL)不会发出任何警告。我认为可以多次定义内部函数(闭包)的新实例,但我不明白为什么这应该是一个问题。有任何想法吗?
common-lisp - Allegro CL 中的 pprint
我正在尝试在 Common Lisp 中编写一个动态创建其他 lisp 文件的程序。Common Lisp 的print
函数似乎对此非常有用。不幸的是,该函数在一行上输出数据。例如(仅打印到标准输出):
生成的 lisp 文件需要是人类可读的,因此不应最小化空格。看来该pprint
功能是我的问题的解决方案。由于pprint 设置*pretty-print*
为 true,该函数应该打印多行。换句话说:
但是,在 Allegro CL 中,pprint 的行为方式似乎与打印相同。输出仅在一行上。有没有办法让函数以“漂亮”的方式打印 s 表达式?在函数正确打印之前是否需要设置其他全局变量?是否有我正在寻找的替代功能/宏?谢谢您的帮助!
file-io - 在 Common Lisp 中处理并发文件访问
多个用户需要使用在 Common Lisp 中创建的接口访问同一个文件目录。发生这种情况时会出现许多竞争条件。例如,当多个用户同时添加或删除一个文件时。lisp 中有没有办法在工作完成时“锁定”特定目录?这与多线程环境中的“同步”块的概念类似,但我有单独的 Lisp 实例。我在 Windows 上使用 Allegro CL。
编辑:对于这个问题的不同解决方案的想法也将不胜感激。