给定一组词法变量,是否可以根据运行时的情况重新绑定其中的一个子集。 我的第一个想法是使用#'set类似的东西: 但这仅适用于特殊变量(并且已折旧)。 我提出了一个可行的解决方案(通过构建setf表达式),但我不愿意展示它,因为它是如此复杂和低效。 有直接的解决方案吗? (ps:我明白这个问题是反常 ...
给定一组词法变量,是否可以根据运行时的情况重新绑定其中的一个子集。 我的第一个想法是使用#'set类似的东西: 但这仅适用于特殊变量(并且已折旧)。 我提出了一个可行的解决方案(通过构建setf表达式),但我不愿意展示它,因为它是如此复杂和低效。 有直接的解决方案吗? (ps:我明白这个问题是反常 ...
我正在尝试为个人项目(也学习 lisp)构建 Golang 通道构造的通用 lisp 实现。 到目前为止,我已经将通道实现为 class 的对象,其中包含一个队列、一个锁和一个条件变量,用于向监听函数发出新消息已添加到队列的信号。 我正在使用波尔多线程来创建线程、锁、条件变量并加入执行(来自lisp ...
在下面的情况下,我想为a和(car b)获得相同的结果,例如(10 10) 。 但是只有符号A显示为(car b)的结果。 我们可以用类似的(something (car b))代码得到10吗? 我也试过下面的但无法得到答案。 我的动机是像下面这样用let制作symbols和params列表。 但 ...
我正在学习 Common Lisp (SBCL)。 我想创建一个工具来调用两个(或更多)具有几个仅在某些参数上不同的相似表达式的宏。 我想定义表达式的基础,然后用我提供的参数修改它。 为此,我想到了 lambda function 的定义。 据我所知,没有与宏的funcall类似的东西,所以我也将宏 ...
除了外观上的差异外, key和optional这些之间的区别是什么: (defun play (&key now) ...) (defun play (&optional now) ...) 据我了解,在这两种情况下: 他们是可选的既不返回列表到 functio ...
这里的背景是我有一个 function 的非破坏性版本,出于性能原因我想使其具有破坏性。 然而,编写单元测试变得具有挑战性,因为 lisp 将源代码中的所有引用列表视为常量,更改这些会导致未定义的行为。 我使用降落伞作为单元测试框架例如, 这有点失败,因为我们最终将8推入常量列表(1 2)最终导致( ...
我这样定义了一个 package:(defpackage :web-app (:nicknames :wa) (:use :cl :hunchentoot)) 这很好用。 但我想删除 hunchentoot。 当我删除它并重新编译时,出现以下错误: 在这些情况下,如何从我的 lisp 图 ...
我想从数字列表中创建一个图形,一些点和线,可能带有颜色。 什么是最简单有效的解决方案? 我想有可能使用 imago 库,但直到现在我尝试使用来自https://quickdocs.org/imago的简单示例时,我都不太成功,例如:;; Create 400x100 px red RGB imag ...
将以下代码放入~/.sbclrc允许我在从命令行使用SBCL REPL 时接收简化的错误消息,而无需深入调试器(我觉得这有点烦人)。 当从Emacs和SLIME运行 SBCL REPL 时,这是我通常与之交互的方式,每当我遇到错误时,REPL 都会坚持进入调试器。 在 Emacs 和 SLIME ...
假设您想获取 package 中每个 function 的 lambda 列表。在 SBCL 上,使用iterate可以做到这一点(use-package :iterate) (defun lambda-lists (package) (iter (for symbol in-package ...
我试图隐藏 CL package 中的数学运算符。除了* 、 /和+ ,这工作正常。 然而,这些符号的符号值由实现设置为我在 REPL 中经常使用的值(function 在 SBCL 中是interactive-eval )。 因为它们是在之前的表单评估中设置的,所以我无法获取它们,除非在评估表单 ...
我有一个使用&rest的 function,它将不同数量的参数列表返回给 function。 我用destructuring bind (db) 打开中断列表。 但是,当变量数量已知时,db 很有用。 什么是最好的方法来分解一个&rest列表,其中值的数量大部分时间都在变化? ...
我目前正在阅读 Seibel 的“Practical common lisp”并找到了这个示例宏: 做一些简单的事情,然后以某种方式格式化两个参数,允许“测试”表单的真实性,但这对我的问题并不重要。 我感兴趣的是将循环转换为 DO,不幸的是,我完全缺乏这样做的必要技能: 这完成了工作,我也可以这样 ...
用于 emacs (v 26.3) 的附加库mylibrary.el已添加到加载路径并自动加载到我的init.el 文件中。 该库也列在 emacs ( Mx list-packages ) 中我安装的包下,并通过 mylibrary.el 中的(provide 'mylibrary) 提供。 该 ...
我有一个递归的 function 来计算文件中出现的次数。 我喜欢做的一项常见任务是报告 function 的结果, format如下: (defun csv-counter (list) (let ((counter 0) (email (first list))) (if ...
只是为了完整起见,我想知道是否有一种方法可以在 Common Lisp 中定义“锯齿状”或“参差不齐的数组”,就像在 Java 中描述的那样,例如: https://www.geeksforgeeks.org/jagged -array-in-java/ 伴随这个问题而来的是第二个问题,这样定义多 ...
当我使用加载 vega-lite 数据集时(vega:load-vega-examples) 我收到以下错误: Could not REQUIRE CL-DATE-TIME-PARSER: circularity detected. Please check your configuration ...
我是 Lisp-Stat 的新手,我开始学习https://lisp-stat.dev/docs/tutorials/basics上的教程,但是当我输入(standard-deviation purchases) (购买定义为教程中的整数列表),我收到错误: #<STANDARD-GENER ...
昨天,我问了一个关于使用 common lisp 创建库的问题。 我的图书馆:;in my-lib.asd (asdf:defsystem :my-lib :depends-on (:cl-json :clsql :clsql-sqlite3) :components ((:file "p ...
Python 的 Itertools 有所谓的starmap 。 给定一个集合 collections 和一个 function,它将 function 严格应用于集合内部的每个集合,使用所述内部集合的元素作为 arguments 到 function。例如, 返回包含 3、7、11、0、2 和 ...