【问题标题】:How do I go about splitting Lisp code into multiple source files?如何将 Lisp 代码拆分为多个源文件?
【发布时间】:2010-11-13 20:44:16
【问题描述】:

现在,我所做的一切都可以放在一个源文件中,而且是一个非常小的源文件。您如何决定将多少内容和内容拆分为单独的文件?

使用 Java,很容易决定一个文件中的内容(已经为您做出决定),但在 Lisp 我发现我编写了许多相互构建的小函数,很难决定什么,如果有任何东西应该分开。当我在 Lisp 中处理大型项目时,不必重新发明轮子会很好,但我在网上找不到很多关于此的具体信息。

您能否分享一些在 Lisp 中处理大型项目的策略,或者指出一些处理此问题的资源?

【问题讨论】:

    标签: version-control lisp common-lisp system


    【解决方案1】:

    如果您使用的是 Common Lisp,ASDF 是一种指定系统的流行方式。它处理源文件(以及更多)之间的加载顺序依赖关系。

    【讨论】:

    • 我有点震惊 - 我知道我以前看过并浏览过您链接中的那个页面,但当时不知道它在说什么。现在在上下文中更有意义 - 谢谢!
    • 这可能有助于研究小型 CL 库如何设置它们的 .asd 文件。这是我写的一个简单的小东西:common-lisp.net/project/cl-applescript
    • 谢谢,看到这样一个小包的例子真的很有帮助!
    【解决方案2】:

    【讨论】:

    • 这是一个很好的解释/如何使用 ASDF 的例子,谢谢
    【解决方案3】:

    当您开始编写 Lisp 程序时,从单个文件开始可能会很有用。一旦代码变得太大(无论是什么),您就可以将其拆分。当您处理需要组织的事情时,您应该投入一些工作。

    一些提示:

    • 有一些工具可以管理源文件依赖关系并提供编译、加载、编译和加载等操作。 ASDF 是其中之一,但还有其他的。

    • 您需要一个文件来描述依赖关系。为它命名以便于识别。

    • 您可能需要一个文件来定义一个或多个

    • 您可能需要将实现特定功能放在它们自己的文件中。

    • 将大量配置数据移动到自己的文件中

    • 通用实用程序应该在另一个文件中

    • 应在使用前定义。其他文件依赖于这个文件,如果宏定义改变,应该自动重新编译。

    • 如果逻辑连接,则将功能组合到一个文件中。在绘图程序中:所有绘图功能、所有用户界面命令、将数据保存到文件、打印……

    • 不要太在意文件大小。 Lisp 源文件可能很大。有时 100k。

    • 开发环境支持在文件中移动。米-。在符号上找到它的来源。

    • 确保您可以重新加载文件,而无需重新启动整个 Lisp。

    • Common Lisp 提供 LOAD 和 COMPILE-FILE 作为函数。您可以在自己的文件中使用这些函数。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-11-05
      • 2014-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多