自动为一个Common Lisp项目创建ASDF文件

4
有没有类似的库可以实现这个功能?在使用Common Lisp时,似乎这是降低新手门槛最有用的事情之一。ASDF似乎主要是为部署而设计的,而不是为快速原型设计和开发而设计的。在comp.lang.lisp上跟踪线程,人们似乎都认为CL的包系统很强大,但缺乏像Python简单模块系统那样的易用性。从可用性角度来看,它失败了。
如果我错了,请告诉我。如果我是对的,我很惊讶为什么没有人尝试在ASDF的基础上构建类似Python模块的系统。
7个回答

6

Zach Beane写道,他现在使用Quicklisp和Quickproject启动新的Common Lisp项目。这可能符合你想要的方向。


3

不确定它是否已准备好用于主流或是否符合您的要求,但这是一个链接到XCVB的网址。


2

我不知道。对于我的开发编译需求,我主要使用ASDF。一旦你意识到需要多个源文件,就打开 <projectname>.asd 文件,添加一个基本的ASDF系统定义模板,并开始添加文件名。在跨文件依赖关系出现时,请更新依赖列表。

但是,我也使用同样的方法处理Makefiles(是的,我知道有自动依赖检查器可以为您完成这项工作,但由于我大多数时间都是独自编码,所以只需随着进展修正Makefile / ASDF定义即可更容易)。

在SBCL中,REQUIRE上有一个钩子来检查ASDF系统,因此你最终得到的东西与Python的import一样方便,但我认为这不是你想要的。


1

也许这不是你想要的答案,但显然你对模块系统有一些想法。你考虑过自己创建一个吗?也就是说,利用你所限定的领域、需求和环境,简单地构建出能够快速让你生活变得更轻松的抽象。

这正是 Lisp 的一个关键优势,我相信你知道的,那就是这些简单的抽象和小工具通常在 Lisp 中非常容易实现。

我并不是建议解决每个遇到包管理系统或 ASDF 问题的人,我只是建议你解决你自己理解的问题,这可能比一些更强大的大范围问题更简单、更小。


这是我考虑的路线,但是先得到更有经验的人的意见和见解很好。;) - dnolen
我不建议自己动手写。首先,你很可能会做错——这比看起来更难!但更重要的是,如果你想使用其他人的库,而不是独立工作并从头开始重新发明一切,ASDF可以为你提供开源CL库的世界。 - Robert P. Goldman

1

现在也有泥球了。

如果你正在寻找一个软件来添加这个功能,那么这是一个不错的选择。


0

如果你想要一个使用bash生成新的common lisp项目目录和文件布局的命令行工具,你可能会发现我为自己创建的lispproject有用。如果它不符合你的需求,请随意fork它或从它获取模板的repo以适应你的需求:lisp-project-template。查看lispproject repo中的sh文件,了解模板的使用方式。另外,请注意,由于我在macOS上使用这个工具,你可能需要调整对sed的调用以适应你的平台。如果需要,主脚本中还有其他的sed调用,但是被注释掉了。


很高兴看到有更多的选择,但我认为文本模板和bash/sed并不是令人鼓舞的选择。 - Svante

-4
它的设计注重功能而非易用性,这正是大多数 Lisp 大师所喜欢的。

不是我想要的答案。Lisp 既强大又易用。但 ASDF 就不太行了。 - dnolen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接