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

Gal*_*mon 20 lisp version-control system common-lisp

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

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

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

Rai*_*wig 14

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

一些提示:

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

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

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

  • 您可能需要在其自己的文件中放置特定实现的功能.

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

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

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

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

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

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

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

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


hua*_*uan 6

请参阅Zach Beane撰写的" 制作一个小型的Common Lisp项目 ".


Dan*_*son 5

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