从Mac终端编译/运行Common LIsp

时间:2011-03-14 18:35:20

标签: macos lisp terminal common-lisp

有办法做到这一点吗?我一直在使用Slime来学习Lisp,我想开始构建更大的项目,这意味着(我认为)我必须开始编写一些.lisp文件。

4 个答案:

答案 0 :(得分:11)

我认为Mac Common LISP最好的赌注是LispWorks Personal EditionSBCL

假设您已安装SBCL,您可以使用文本编辑器创建.lisp文件(emacs将是传统选择):

(defun test ()
"Hi!")

然后你可以在shell中运行一个lisp解释器:

bash% sbcl
This is SBCL 1.0.29, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.

SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses.  See the CREDITS and COPYING files in the
distribution for more information.
* (load "test.lisp")

T
* (test)

"Hi!"
* 

shell可以是mac终端窗口,也可以是在emacs中运行的inferior lisp interpreter

答案 1 :(得分:6)

Slime旨在支持编写Lisp文件,包括定义查找,在线文档,名称完成,编译等。也许您应该看一下手册第3章(使用粘液模式)。

答案 2 :(得分:5)

我认为要说出你真正要求的内容有点难。

您的可以的编译和使用C-c C-k在缓冲区中,然后用它从煤泥REPL内加载在煤泥整个Lisp的文件,所以你甚至不用到在REPL中运行LOAD

然后,有从Unix系统将在OS X壳工作,如果你想从命令行脚本运行Lisp程序称为家当线的解决方案,但那些从实施不同实施。

构建可执行文件的可能性,然后可以从命令行运行,将相关代码加载到Lisp图像中,然后使用加载的代码保存该图像。这些图像可以是可执行的,在启动时执行给定的功能(想想main)。这种可能性对于实现也有所不同,因此,如果不提及您的选择实现,您将不得不在其文档中查找。

现在,既然你问的是“专门建立更大的项目”,我的建议就是熟悉一个系统定义设施。 lisp系统基本上是一种“项目”,一些包含代码,包定义和系统定义的文件。我将给你一个ASDF的例子,这是(据我所知)开源世界中最受欢迎的一个。

(defsystem my-system
  :name "my-system"
  :version "0.0.1"
  :author "hedgehogrider"
  :license "BSD"
  :description "bla bla bla"
  :serial t
  :components ((:file "packages")
               (:file "code")))

现在,您可以将其放在asd文件中,例如my-system.asd,将您的包裹定义放在packages.lisp中,将您的功能放在code.lisp中,然后,给您正确设置ASDF,您可以通过按,l my-system在Slime REPL中编译和加载系统。或者,您可以在REPL中输入(asdf:oos 'load-op 'my-system)(或者,对于ASDF的更新版本:(asdf:load-system 'my-system))。

为了使这项工作,你必须为你的Lisp实现安装ASDF,如果它没有附带,并且包含你的asdf文件的目录必须放在{{1 }}。一个简单的解决方案是将您的asdf:*central-registry* - 文件符号链接到一个中央目录,但还有其他可能性。查看ASDF documentationother tutorials以了解有关ASDF的更多信息。

答案 3 :(得分:2)

是的,您需要编写自己的Lisp文件,而不是依赖图像。

我推荐CLISP for OSX以获得开箱即用的体验。它有一个很好的REPL经验。

今天使用F / OSS进行的专业开发通常使用SBCL或CCL。