首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何理解这个通用Lisp包的行为?

如何理解这个通用Lisp包的行为?
EN

Stack Overflow用户
提问于 2021-06-18 18:51:04
回答 1查看 64关注 0票数 2

我对普通的Lisp很陌生。当主题是包和系统时,甚至更多。我正在处理一个程序,有些东西让我很感兴趣。顺便说一句,我用的是SBCL和Slime (Emacs)。

在顶层(CL-用户),我可以:

代码语言:javascript
复制
CL-USER> (application-name/file-name::%function-on-parenscript)

这行得通!然后,我更改为在包内:

代码语言:javascript
复制
CL-USER> (in-package :application-name)

好的。因此,我认为在进入应用程序名称之后:

代码语言:javascript
复制
APPLICATION-NAME>

我可以做的就是:

代码语言:javascript
复制
APPLICATION-NAME> (file-name::%function-on-parenscript)

然而,这是行不通的。如果我这么做就行了:

代码语言:javascript
复制
APPLICATION-NAME> (application-name/file-name::%function-on-parenscript)

如果我在application-name里面,为什么application-name是必要的?

2-为什么有时我需要使用::,而另一些时候我只使用:来调用事物?

常见的Lisp包用于解决名称空间问题。但它们真的吸引了我。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-18 21:14:37

application-name/file-nameapplication-name是两个不同的包,它们仅在名称上类似于人类读者,但在其他方面是不相关的。

符号要么用包前缀写,要么不带。当有包前缀时,包是冒号左边或双冒号的部分。

双冒号是一种引用不是从包导出的符号(它们是私有的)的方法。

单个冒号用于导出的符号。

如果要引用的符号在当前包中是“可访问的”,例如,因为您正在“使用”它的包并导出它,那么您可以编写没有包前缀的符号

详细信息请参见大型程序设计:包和符号

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68040182

复制
相关文章

相似问题

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