如果您不关心并且只想查看问题,这里的背景故事会跳到底部.
所以我在LISP玩了一会儿.一些基本功能,一些类和文件IO.当我遇到这篇文章时:
http://www.adampetersen.se/articles/lispweb.htm
我很高兴尝试将lisp用于Web应用程序.我去下载软件包,但是对于我的生活,我不知道如何将它们加载到我的Allegro IDE中.
嗯......好吧,hunchentoot网站说很多基本软件包都在LispWorks中.所以我下载了.仍然不确定如何获取我下载到这些IDE中的软件包的源代码.他们似乎有包的二进制文件?
哦,也许生病切换到我的ubuntu服务器和apt-获取所有软件包和设置粘液(我之前没有使用它因为我只是想学习lisp.同时学习emacs和lisp似乎真的令人生畏).我倾向于获得所需的所有软件包并加载粘液,并且再次出现同样的问题.
我挖了一些更多,看到这个程序叫做ASDF.看起来ASDF是lisp的某种包构建器?我不知道这看起来有点令人困惑.我现在就要放弃了.
如果你还在读这里,这是我的问题.
1.如何将这些包的源加载到我的lisp环境中.尝试学习lisp并不是太难,但有关环境的信息却很少.我是否需要构建我使用ASDF下载的软件包.
2.有没有一种简单的方法可以让人们在lisp中启动并运行,而无需提前大量学习所有工具?
嗯......好吧,hunchentoot网站说很多基本软件包都在LispWorks中.所以我下载了.
这只是意味着作者在Hunchentoot中编写了许多特定于Lispworks的代码.这并不意味着Hunchentoot仅适用于Lispworks.
仍然不确定如何获取我下载到这些IDE中的软件包的源代码.
您需要使用ASDF.
他们似乎有包的二进制文件?
这不太可能.
哦,也许生病切换到我的ubuntu服务器和apt-获取所有的软件包和设置slime>(我之前没有使用它,因为我只是想学习lisp.同时学习emacs和lisp似乎真的令人生畏).
不要那么做.您不需要使用Emacs或Slime.
我倾向于获得所需的所有软件包并加载粘液,并且再次出现同样的问题.
要快速获得结果,请尝试使用clbuild:http://common-lisp.net/project/clbuild/
我挖了一些更多,看到这个程序叫做ASDF.看起来ASDF是lisp的某种包构建器?我不知道这看起来有点令人困惑.
ASDF有点像Common Lisp应用程序的Makefile.
我现在就要放弃了.
这是你可以做到的最糟糕的事情(在这个或任何其他方面).我很高兴你决定在这里发布你的问题.
如何将这些包的源加载到我的lisp环境中.尝试学习lisp并不是太难,但有关环境的信息却很少.我是否需要构建我使用ASDF下载的软件包.
clbuild应该为您提供所需的一切,但如果您不想使用它,这里有一些提示:
CLISP,SBCL:ASDF是你的Lisp的一部分.跑(require :asdf)
.Lispworks,Allegro:您需要下载并加载ASDF.在某处保存asdf.lisp然后运行(load "/path/to/asdf.lisp")
.
对于每个库/应用程序(ASDF中的"系统"说话),您需要下载并将其解压缩到某个地方.重复,直到满足所有依赖关系.记下这些地方(目录).
对于步骤#2中的每个位置,将该位置添加到ASDF注册表:(push "/path/to/dir/" asdf:*central-registry*)
.不要忘记尾随斜线.
使用加载系统(asdf:oos 'asdf:load-op :system-name)
.
有没有一种简单的方法可以让人们在lisp中启动并运行,而无需在前期学习所有工具时加快大量时间?
见上文 - 使用clbuild.
Ubuntu中最快捷的方法是使用该发行版中包含的软件包.如果你只是想尝试一些东西,那就"好",但这些版本通常比较陈旧.我会建议包装sbcl
和slime
.如果你还不知道emacs,你可以通过它的内置教程C-h t
(按Control-h,release,然后按t)快速进入.
然后你可以启动emacs,启动slime(通过M-x slime
),打开一个lisp文件(C-x C-f ~/lisp/first-try.lisp
),然后你就可以开始了.作为Lisp的教程,我认为Practical Common Lisp是一本非常好的书,它是免费提供的.
现在,当您开始喜欢Lisp时,您可能需要更多最新的软件包.我建议使用clbuild(请参阅链接以获取更多信息,包括常见问题解答).然后,您还可以构建一个新的sbcl(由发行版本引导).
顺便说一下,ASDF只是一个系统定义设施.它不知道如何下载软件包,它只知道如何将系统加载到正在运行的Lisp映像中.换句话说,它只是解决了自动加载某些"系统"(库)按正确顺序组成的多个文件的问题.最新版本允许通过简单的方式加载包(在安装之后,例如通过clbuild)
(asdf:load-sys 'foo)
较旧的版本显示了ASDF的内部操作概念:
(asdf:operate 'asdf:load-op 'foo)
以上load-sys
是此常见用例的简写.更多信息(可以说,您需要了解的所有信息)在ASDF入门指南中.ASDF也包含在SBCL中.
当您加载源文件时,它会自动编译(生成.fasl
文件(快速加载)),以便下次加载速度更快.