我正在尝试使用GNU common 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版本”,但是我不知道怎么做。
如果我可以说"from PS import chain,@,(etc)“--指定我想要手动导入的每个符号,那也没问题。
发布于 2010-03-07 11:24:36
使用DEFPACKAGE创建自己的包,而不是使用COMMON-LISP-USER包:
(defpackage #:my-awesome-program
(:use #:cl #:parenscript))
(in-package #:my-awesome-program)
; your code hereCOMMON-LISP-USER可以包含各种特定于实现的符号。
您还可以使用SHADOWING-IMPORT来获取单个符号,覆盖包中当前可能已可见的符号,例如
(shadowing-import 'ps:*)https://stackoverflow.com/questions/2394494
复制相似问题