如果你不在乎并且只想看到这个问题,那么背景故事会跳到底部。
所以我在LISP玩了一会儿。一些基本功能,一些类和文件IO。当我遇到这篇文章时:
http://www.adampetersen.se/articles/lispweb.htm
我很高兴尝试将lisp用于Web应用程序。我去下载软件包,但是对于我的生活,我不知道如何将它们加载到我的Allegro IDE中。
嗯......好吧,hunchentoot网站上说很多基本软件包都在LispWorks中。所以我下载了。仍然不确定如何获取我下载到这些IDE中的软件包的源代码。他们似乎有包的二进制文件?
哦好吧也许生病切换到我的ubuntu服务器和apt-get所有的软件包和设置粘液(我以前没用过它因为我只是想学习lisp。同时学习emacs和lisp似乎真的令人生畏)。我倾向于获得所需的所有软件包并加载粘液,并且再次出现相同的问题。
我挖掘了更多,看到这个名为ASDF的程序。看起来ASDF是lisp的某种包构建器?我不知道这看起来有点令人困惑。我现在就要放弃了。
如果你还在读这里,这是我的问题 1.如何将这些包的源加载到我的lisp环境中。尝试学习lisp并不是太难,但有关环境的信息却很少。我是否需要构建我使用ASDF下载的软件包 2.有没有一种简单的方法可以让人们在lisp中启动并运行,而无需提前大量学习所有工具?
答案 0 :(得分:8)
嗯......好吧,那个hunchentoot网站 说很多基本套餐都是 在LispWorks中。所以我下载了。
这只是意味着作者在Hunchentoot中编写了许多特定于Lispworks的代码。这并不意味着Hunchentoot仅适用于Lispworks。
仍然不确定如何获取我下载到这些IDE中的软件包的源代码。
您需要使用ASDF。
他们似乎有包的二进制文件?
这不太可能。
哦,好吧可能会切换到我的ubuntu服务器并且apt-get所有的软件包和设置slime> (我以前没用过,因为我只是想学习lisp。学习emacs和lisp 同时看起来真是令人生畏。)
不要那样做。您不需要使用Emacs或Slime。
我倾向于获得所需的所有软件包并加载粘液,并且再次出现同样的问题 可用。
要快速搜索结果,请尝试使用clbuild:http://common-lisp.net/project/clbuild/
我挖掘了更多,看到这个名为ASDF的程序。它看起来像ASDF 用于lisp的包构建器?我不知道这看起来有点令人困惑。
ASDF有点像Common Lisp应用程序的Makefile。
我现在就要放弃了。
这是你能做到的最糟糕的事情(在这个或任何其他方面)。我很高兴你决定在这里发布你的问题。
- 如何将这些包的源加载到我的lisp环境中。 试图学习lisp并不是太难,但有关的信息 环境很稀疏。我是否需要构建我使用ASDF下载的软件包。
醇>
clbuild应该为您提供所需的一切,但如果您不想使用它,这里有一些提示:
(require :asdf)
。 Lispworks,Allegro:您需要下载并加载ASDF。在某处保存asdf.lisp,然后运行(load "/path/to/asdf.lisp")
。(push "/path/to/dir/" asdf:*central-registry*)
。不要忘记尾随斜杠。(asdf:oos 'asdf:load-op :system-name)
。
- 有没有一种简单的方法可以让人们在lisp中启动并运行,而无需在前期学习所有工具时加快大量时间?
醇>
见上文 - 使用clbuild。
答案 1 :(得分:6)
Ubuntu中最快捷的方法是使用该发行版中包含的软件包。如果你只是想尝试一些东西,那就“好”,但这些版本通常比较陈旧。我会推荐包sbcl
和slime
。如果您还不了解emacs,可以通过其内置教程(C-h t
(按Control-h,发布,然后按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 Getting Started guide。 ASDF也包含在SBCL中。
加载源文件时,会自动编译(生成.fasl
个文件(快速加载)),以便下次加载速度更快。
答案 2 :(得分:2)
最快的入门方式之一可能是使用Lisp in a Box(或像LispBox这样的衍生产品)。这些都是您需要的所有内容。
你也可以试试Lisp Resource Kit,它是一个带有Lisp工具和文档的可启动CDROM,都已经为你设置了。只需将其放入CDROM驱动器并启动即可!
答案 3 :(得分:2)
所有这些答案都很好,但随着Quicklisp的新流行,它们已经过时了。非常松散地说,quicklisp是asdf制作的包管理器。一旦在系统上安装了Quicklisp,您就可以使用(ql:quickload "name of lisp library")
将该库加载到您的lisp环境中,包括在需要时下载它及其任何依赖项。例如,要下载,安装和加载Hunchentoot及其所有依赖项,请使用(ql:quickload "hunchentoot")
。在以后的lisp会话中,再次调用(ql:quickload "hunchentoot")
将只加载已下载和安装的版本,使ql:quickload
成为加载本地或远程可用库的简单方法。要安装Quicklisp,我建议你quicklisp.org。
更详细的解释
当涉及到库时,Lisp与其他语言的工作方式略有不同。首先要知道的是语言本身几乎不提供库函数 - 它具有load
(它通过并运行文件中的每一行,就像在REPL中键入它们一样)和{{1} (它创建一个“快速加载”文件,compile-file
和可以执行得更快的文件的预编译版本。使用核心语言提供的内容,为了加载库,您必须转到它的每个文件并load
它(或load
它,以获得更好的加载速度/性能)。这很繁琐,因此创建了各种库来管理库的加载,目前(load (compile-file "filename"))
是王道(以至于许多lisp实现实际上捆绑了它)。在asdf术语中,库被称为“系统”,而.asdf文件描述了加载它们所涉及的所有元数据 - 它们所依赖的系统以及加载文件的顺序,但它们仍然会变得相当复杂。然后,Quicklisp位于asdf之上。基本上,当asdf发现它无法找到系统时,Quicklisp会介入并检查该系统是否可以从Quicklisp的一个在线存储库中获得,如果是这样,则下载它并让asdf继续运行。 asdf
基本上只是用于加载系统的asdf机器的包装器,使得quicklisp能够根据需要提供帮助。