如果我错了,请告诉我。如果我是对的,我很惊讶为什么没有人尝试在ASDF的基础上构建类似Python模块的系统。
我不知道。对于我的开发编译需求,我主要使用ASDF。一旦你意识到需要多个源文件,就打开 <projectname>.asd 文件,添加一个基本的ASDF系统定义模板,并开始添加文件名。在跨文件依赖关系出现时,请更新依赖列表。
但是,我也使用同样的方法处理Makefiles(是的,我知道有自动依赖检查器可以为您完成这项工作,但由于我大多数时间都是独自编码,所以只需随着进展修正Makefile / ASDF定义即可更容易)。
在SBCL中,REQUIRE上有一个钩子来检查ASDF系统,因此你最终得到的东西与Python的import一样方便,但我认为这不是你想要的。
也许这不是你想要的答案,但显然你对模块系统有一些想法。你考虑过自己创建一个吗?也就是说,利用你所限定的领域、需求和环境,简单地构建出能够快速让你生活变得更轻松的抽象。
这正是 Lisp 的一个关键优势,我相信你知道的,那就是这些简单的抽象和小工具通常在 Lisp 中非常容易实现。
我并不是建议解决每个遇到包管理系统或 ASDF 问题的人,我只是建议你解决你自己理解的问题,这可能比一些更强大的大范围问题更简单、更小。
如果你想要一个使用bash生成新的common lisp项目目录和文件布局的命令行工具,你可能会发现我为自己创建的lispproject有用。如果它不符合你的需求,请随意fork它或从它获取模板的repo以适应你的需求:lisp-project-template。查看lispproject repo中的sh文件,了解模板的使用方式。另外,请注意,由于我在macOS上使用这个工具,你可能需要调整对sed的调用以适应你的平台。如果需要,主脚本中还有其他的sed调用,但是被注释掉了。