common-lisp相关内容

&;Quot;透明&;;宏可能吗?

我想编写一个Clojurewith-test-tags宏,它包装一堆表单,并向每个deftest表单的名称添加一些元数据-具体地说,就是向:tags键添加一些内容,这样我就可以使用一个工具来运行具有特定标记的测试。 with-test-tags的一个明显实现是递归遍历整个身体,根据我的发现修改每个deftest表单。但我最近一直在阅读let over Lambda,他提出了一个很好的观点:不需要 ..
发布时间:2022-07-24 18:53:07 其他开发

LISP:在循环中收集多个列表

我希望能够在一个循环中收集多个列表。 我知道这可以在没有循环的情况下完成,但我想知道使用循环是否也可以这样做。我想要这样的: (loop for var in list (if (cond1 var) (if (cond2 var) collect into list1 coll ..
发布时间:2022-07-01 19:03:11 其他开发

Common Lisp中的对象内存布局

我知道Common Lisp不鼓励程序员接触原始内存,但我想知道是否可以查看对象是如何在字节级别存储的。当然,垃圾收集器在内存空间中移动对象,函数(obj-as-bytes obj)的两次后续调用可能会产生不同的结果,但让我们假设我们只需要一个内存快照。您将如何实现此类功能? 我尝试使用SBCL的情况如下: (defun obj-as-bytes (obj) (let* ((add ..
发布时间:2022-03-21 23:24:27 其他开发

如何使用usocket创建连接?(常见LISP)

我正在尝试使用LISP中的套接字创建连接。使用sbcl,我发现“usocket”可用。但是我无法在服务器和客户端之间发送字符串。代码如下: 服务器: (ql:quickload "usocket") (use-package 'usocket) (defun default-tcp-handler (stream) ; null (declare (type stream stre ..
发布时间:2022-03-21 23:19:52 其他开发

加载远程Lisp文件

也许这种情况很少见,但我喜欢连接到运行Clozure CL的远程计算机,并在那里编译一些文件,这些文件位于我的本地桌面上。 所以,到目前为止,我已经实现了连接到我的远程Lisp box。我已经使用Emacs完成了这项工作。因此,我在.emacs文件中添加了以下几行: (load (expand-file-name "~/quicklisp/slime-helper.el")) (re ..
发布时间:2022-03-21 23:14:52 其他开发

任意类型说明符上的Defmethod?

我尝试做的是: (defgeneric fn (x)) (defmethod fn ((x (integer 1 *))) "Positive integer") (defmethod fn ((x (integer * -1))) "Negative integer") 我想要一个可以处理任意类型说明符的泛型函数,包括基于列表的说明符,如(and x y)、(or ..
发布时间:2022-03-21 23:10:58 其他开发

常用Lisp反引号/反引号:如何使用?

我在使用Lisp的反引号读宏时遇到了问题。每当我试图编写似乎需要使用嵌入式反引号的宏时(例如,Paul Graham的ANSI Common Lisp第399页中的``(w ,x ,,y)),我都不知道如何以编译的方式编写代码。通常,我的代码会收到前面带有“逗号不在反引号内”的整个错误链。有人能为我如何编写正确计算的代码提供一些指导吗? 作为示例,我目前需要一个宏来描述'(function-na ..
发布时间:2022-03-21 23:05:53 其他开发

以编程方式生成符号宏

我得到了一个由两部分组成的数据结构: 将符号映射到索引的哈希表 包含数据的向量向量 例如: (defparameter *h* (make-hash-table)) (setf (gethash 'a *h*) 0) (setf (gethash 'b *h*) 1) (setf (gethash 'c *h*) 2) (defparameter *v-of-v* #(#(1 ..
发布时间:2022-03-21 23:02:30 其他开发

抑制asdf:Load-系统控制台输出

我已经使用Steel Bank Common Lisp创建了一个小项目,我正在使用ASDF编译和加载它。LOAD命令为: (asdf:load-system :) 一切正常(程序编译后运行良好),但我不断得到类似 的输出 ; compiling file "[...].lisp" (written 13 APR 2014 06:20:03 PM): ; comp ..
发布时间:2022-03-21 22:58:42 其他开发

计算传递给用LISP生成函数的宏的参数

我正在尝试创建一个宏,该宏基于py-configparser创建的配置对象为每个配置定义访问器函数: (defmacro make-config-accessor (config section option) ; create an upper case function name then intern (let* ((fun-name (intern (string-upcas ..
发布时间:2022-03-09 13:10:53 其他开发

Push 不会将列表修改为函数参数

我是 common lisp 的新手,所以希望有人能向我澄清这一点: 假设我们有一个列表,想用 push 添加一个项目来修改它: CL-USER>(defparameter xx '(1 2 3))XXCL-用户>xx(1 2 3)CL-用户>(按 100 xx)(100 1 2 3)CL-用户>xx(100 1 2 3) 正如预期的那样.但是当我尝试对函数执行相同操作时,它不会修改列表 ..
发布时间:2022-01-21 22:35:53 其他开发

使用 Vim 进行 Lisp 开发

我已经断断续续地使用 Lisp 有一段时间了,但我开始更加认真地在 Lisp 中做一些“真正的"工作.我是 Vim 的忠实粉丝,我想知道如何使用 Vim 作为我的 Lisp 开发编辑器来提高工作效率.欢迎使用插件、工作流程建议等. 请不要说“使用 emacs",因为我已经开始使用 Vim 并且作为编辑器我真的很享受它. 解决方案 Limp 旨在成为一个功能齐全的用于 Vim 的 Co ..
发布时间:2022-01-20 21:27:31 其他开发

使用变量作为格式指令的前缀参数

我需要在它之前打印一些带有可变数量空格的东西.例如,如果我需要在文本前打印 5 个空格,我会这样做: (格式 T "%5T 我的文本")输出:我的文本 我可以使用变量来代替 5 并能够将值传递给它吗?我正在寻找的是这样的: (format T "%(~d)T My Text" 5)输出:我的文本 解决方案 试试 (format T "~vT My Text" 5) 参见22.3 格式 ..
发布时间:2022-01-15 11:00:07 其他开发