有没有一种方法可以做到这一点?我一直在使用Slime学习Lisp,我想开始构建更大的项目,这意味着(我认为)我需要开始编写一些 .lisp 文件。
有没有一种方法可以做到这一点?我一直在使用Slime学习Lisp,我想开始构建更大的项目,这意味着(我认为)我需要开始编写一些 .lisp 文件。
(defun test ()
"Hi!")
然后你可以在终端中运行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中运行的Lisp解释器。
Slime旨在支持编写Lisp文件,包括定义查找、在线文档、名称完成、编译等功能。也许您应该查看手册第3章(使用slime-mode)。
我觉得有点难以确定你真正想要问什么。
在Slime中,您可以使用缓冲区中的C-c C-k
编译和加载整个Lisp文件,然后从Slime REPL中使用它,因此您甚至不必在REPL中运行LOAD
。
然后,如果您想要从命令行运行Lisp程序作为脚本,那么对于来自unices的shebang行有一些解决方案可在OS X Shell中使用,但这些解决方案因实现而异。
一种可能性是将相关代码加载到您的Lisp映像中,然后保存带有已加载代码的映像。 这些映像可以被制作成可执行文件,在启动时执行给定的函数(类似main
)。该可能性因不同的实现而异,因此如果没有提及您选择的实现,您需要查阅其文档。
(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")))
my-system.asd
的asd
文件中,在packages.lisp
中定义包,在code.lisp
中编写功能。如果您正确设置了ASDF,您就可以通过在Slime REPL中按,l my-system
来编译和加载系统。或者,您可以在REPL中输入(asdf:oos 'load-op 'my-system)
(或者对于较新版本的ASDF:(asdf:load-system 'my-system)
)。asdf
文件的目录必须放在asdf:*central-registry*
中。一个简单的解决方案是将您的asdf
文件符号链接到一个中心目录,但也有其他可能性。请查看ASDF文档或其他教程以了解更多关于ASDF的信息。是的,你需要编写自己的Lisp文件而不是依赖于镜像。
我推荐在OSX上使用CLISP以获得开箱即用的体验。它有一个很好的REPL体验。
今天使用F/OSS进行专业开发通常使用SBCL或CCL。
C-c C-k
即可编译和加载文件,请查看我的答案以获取更多详细信息。 - danlei