packages - CLisp : "use-package" resolving conflicts non-interactively

标签 packages common-lisp

我试图在 GNU 通用 lisp 中使用 parenscript 将一个 lisp 文件编译成一个 javascript 文件。

我发现如果我尝试使用它的前缀(“ps:@”),则使用 PS 符号宏“@”不起作用。但是,如果我在尝试编译 lisp 文件之前使用 REPL 并运行 (use-package :ps),一切都会按预期工作(并且我不必使用前缀)。

问题是 PS 包包含冲突符号,例如:

*** - (USE-PACKAGE (#<PACKAGE PARENSCRIPT>) #<PACKAGE COMMON-LISP-USER>): 2 name conflicts remain  
  Which symbol with name "CHAIN" should be accessible in #<PACKAGE COMMON-LISP-USER>?  
  The following restarts are available:  
PARENSCRIPT    :R1      #<PACKAGE PARENSCRIPT>  
COMMON-LISP-USER :R2    #<PACKAGE COMMON-LISP-USER>  
ABORT          :R3      Abort main loop

我可以通过选择 :r1 以交互方式解决这个问题,但是当我尝试将这一步放在我的脚本中时,它只是保释(因为它是非交互式的,它不会让我选择使用什么重新启动)

我很想说(在我的脚本中)“只使用所有冲突符号的 PS 版本”,但我不知道该怎么做。

如果我可以说(就像在 python 中那样),“从 PS 导入链,@,(等)” - 指定我想手动导入的每个符号,那也没关系。

最佳答案

不要在 COMMON-LISP-USER 包中工作,而是使用 DEFPACKAGE 制作自己的包:

(defpackage #:my-awesome-program
  (:use #:cl #:parenscript))

(in-package #:my-awesome-program)

; your code here

COMMON-LISP-USER 可能包括各种特定于实现的符号。

您还可以使用 SHADOWING-IMPORT 来获取单个符号,覆盖包中当前可能已经可见的内容,例如
(shadowing-import 'ps:*)

关于packages - CLisp : "use-package" resolving conflicts non-interactively,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2394494/

相关文章:

r - 在 R 中使用没有命名空间的包

scheme - 模拟 scheme 在 common lisp 中定义

common-lisp - 自定义插槽选项不会对其参数应用任何缩减

npm - gulp-sourcemaps的用途是什么?

r - R中的快速Levenshtein距离?

module - 如何在 Julia 中正确加载模块?

common-lisp - 什么时候在 lambda 表达式前使用#'(函数)?

common-lisp - 破坏性的位置修改运算符

lisp - 你能在没有 REPL 的情况下在 Lisp 上编程吗?

visual-studio-2010 - 将NuGet软件包文件夹添加到解决方案文件?