如何将Lisp代码拆分为多个源文件?

时间:2009-07-24 19:36:20

标签: version-control lisp common-lisp system

现在,我所做的一切都设法适合单个源文件,而且这个文件非常小。你如何决定拆分成单独文件的数量和内容?

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

你能否分享一些处理Lisp中较大项目的策略,或者指出一些处理这个问题的资源?

3 个答案:

答案 0 :(得分:14)

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

一些提示:

  • 有一些工具可以管理源文件依赖项,并提供编译,加载,编译和加载等操作。 ASDF 是一个,但也有其他人。

  • 您需要一个文件来描述依赖关系。将其命名为可以识别。

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

  • 您可能需要在自己的文件中加入特定于实施的功能

  • 将大量配置数据移至自己的文件

  • 常规实用程序应位于其他文件中

  • 应在使用前定义。其他文件依赖于此文件,如果更改了宏定义,则应自动重新编译。

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

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

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

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

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

答案 1 :(得分:6)

见Zach Beane的“Making a small Common Lisp project”。 他在Making a small Lisp project with quickproject and Quicklisp

上发布了更新的帖子

答案 2 :(得分:4)

如果您使用Common Lisp,ASDF是指定系统的常用方法。它处理源文件之间的负载顺序依赖性(以及更多)。