gpt4 book ai didi

lisp - Common Lisp中有没有像Python的 `if __name__ == "__main_ _":`之类的东西

转载 作者:太空宇宙 更新时间:2023-11-03 18:39:07 25 4
gpt4 key购买 nike

我在两个分开的文件中写了两个函数,假设是文件A.lisp 和B.lisp,这两个文件都有一些用于测试的主要程序代码,A.lisp 会调用B.lisp 中的函数。这意味着直接在 A.lisp 中使用 load 方法会执行 B.lisp 中的主要代码,这是不应该发生的。在我看来,这些文件太小了,不能考虑使用诸如包之类的东西。

在 Common Lisp 中有没有类似 Python 的 if __name__ == "__main__": 的东西?只有当前文件是主模块(即正在运行的程序)时,才会执行包含在此条件中的顶级代码,但如果它作为库导入则不会执行。

最佳答案

包只是符号的命名空间。他们没有说任何关于加载或编译代码的事情。

Common Lisp 在其 ANSI Common Lisp 标准中没有库、模块甚至类似“主”模块/例程的概念。该标准定义了两个例程 PROVIDEREQUIRE。但是这些都没有很好地指定。

大多数应用程序和库使用“系统”工具来构建、指定、编译和加载代码。

有一个名为 ASDF 的“免费” . “另一个系统定义工具”。对于大多数类型的应用程序,像 ASDF 这样的工具很有用。对于原始应用程序,您可以使用 COMPILE-FILELOAD 等标准函数编写自己的工具。

Nick Levine 为 ASDF 写了一个教程(他废弃的 Lisp 书籍项目的一部分):Systems .

一些 Lisp 实现具有更广泛的功能来创建应用程序(例如,使用 Clozure Common Lisp 编写的 Mac OS X 应用程序)。

关于lisp - Common Lisp中有没有像Python的 `if __name__ == "__main_ _":`之类的东西,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8713585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com