首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CLisp:"use-package“以非交互方式解决冲突

CLisp:"use-package“以非交互方式解决冲突
EN

Stack Overflow用户
提问于 2010-03-07 07:33:34
回答 1查看 1.6K关注 0票数 5

我正在尝试使用GNU common lisp中的parenscript将lisp文件编译成javascript文件。

如果我尝试使用它的前缀(" PS :@"),我发现使用ps符号宏"@“不起作用。但是,如果我在尝试编译lisp文件之前使用REPL并运行( use -package :ps),那么一切都会正常工作(并且我不需要使用前缀)。

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

代码语言:javascript
复制
*** - (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)“--指定我想要手动导入的每个符号,那也没问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-03-07 11:24:36

使用DEFPACKAGE创建自己的包,而不是使用COMMON-LISP-USER包:

代码语言:javascript
复制
(defpackage #:my-awesome-program
  (:use #:cl #:parenscript))

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

; your code here

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

您还可以使用SHADOWING-IMPORT来获取单个符号,覆盖包中当前可能已可见的符号,例如

代码语言:javascript
复制
(shadowing-import 'ps:*)
票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2394494

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档