建立一个工作Common Lisp的环境,为有志Lisp的新手(Setting up a worki

2019-07-29 21:27发布

我从自动化与shell脚本,一些轻PHP的工作,和一些简单的C程序的任务一直是UNIX系统管理员很长一段时间,而一旁,我从来没有在节目的方式做了很多工作。 我最近决定伸出我的脑子有点和学习的Common Lisp。

我中途通过Touretzky的“温柔介绍”和,刚刚达到一章I / O,我希望得到超越打字的东西进入REPL,因为我走过书和练习。 问题是,我无法找到要找一份体面,工作环境像样的HOWTO /教程。

我已经安装了Emacs(这本身就是一个艰难的变化,因为我用六将近20年),泥和几个CL实现。 然而,对于这些作品中的任何一个文件是巨大的,不要介意试图通过所有三个涉水。 我有几个脱脂免费在线CL书,所有的人都不可知的环境,假设你会打字的东西到REPL或加载源文件。

这将真正使这方面的经验更愉快,如果我能找到一个体面的介绍来设置为Common Lisp的Emacs的环境,让我在一个窗口LISP方式编辑(函数和变量自动完成将是非常好的这里)看在评估另一单个表达式(输出和返回值)的结果,以及能够告诉被评估整个缓冲区和“运行”,而我看到的结果某处。

任何及所有指针将不胜感激。

编辑:我的平台是FreeBSD的/ AMD64和我喜欢的开源解决方案。

Answer 1:

让我们假设你有emacs的运行,并且已经从CVS签出泥并安装它。 这应该是很容易与任何Linux发行版; apt-get install emacs slime做对我来说。 (您还应该安装SBCL,最好的Common Lisp实现。)

泥开箱没有做太多了,所以它需要的配置。 配置Emacs是在你做~/.emacs文件。 访问该文件( Cx Cf ~/.emacs) 我有这样的事情,它加载了各种好吃的东西:

(eval-after-load "slime"
  '(progn
     (setq slime-lisp-implementations
           '((sbcl ("/usr/bin/sbcl"))
             (ecl ("/usr/bin/ecl"))
             (clisp ("/usr/bin/clisp"))))
     (slime-setup '(
                    slime-asdf
                    slime-autodoc
                    slime-editing-commands
                    slime-fancy-inspector
                    slime-fontifying-fu
                    slime-fuzzy
                    slime-indentation
                    slime-mdot-fu
                    slime-package-fu
                    slime-references
                    slime-repl
                    slime-sbcl-exts
                    slime-scratch
                    slime-xref-browser
                    ))
     (slime-autodoc-mode)
     (setq slime-complete-symbol*-fancy t)
     (setq slime-complete-symbol-function
  'slime-fuzzy-complete-symbol)))

(require 'slime)

如果您没有安装泥在你的“站点目录”不,你还需要这些行之前,补充一点:

(add-to-list 'load-path "~/elisp/slime/")
(add-to-list 'load-path "~/elisp/slime/contrib")

(更改这些路径到正确的位置,当然)。

的关键部分是煤泥设置,此加载多种可选模块,包括REPL的。 (我也考虑看中缩进和车博士是必不可少的。)

无论如何,你可以加载到正在运行的Emacs本Mx eval-buffer ,或将每个SEXP内的点,然后按CMx 。 (您也可以指向SEXP并按年底Cx Ce 。有多种方式来评估的Emacs Lisp在Emacs,而不是学习CL真正相关的。)

此时,你应该能够键入Mx slime和被带到你的REPL。 之前出现这种情况,你的口齿不清将被加载,泥会告诉它来编译斯旺克(泥的CL侧),你会看到这种情况发生。 这只是发生一次,不过,下一次将泥更快地启动。

在REPL,你可以键入Common Lisp的命令,并看到他们的评估结果。 按Tab键来完成的东西会弹出尽可能完整的窗口; 这是聪明的建成,使输入类似“DB”将弹出包含“解构绑定”名单。 很有帮助。 M- /将你已经在Emacs类型的地方也很齐全符号; 另一个节省很多时间。 (此作品无处不在Emacs,顺便说一句,被称为“动态缩写扩展”。)

此前你说的REPL很无聊,所以让我们打开一个真正的文件。 按Cx Cf test.lisp 。 不出意外,这将打开一个缓冲区编辑test.lisp,当你第一次保存文件(这将创建Cx Cs )。 这Lisp的文件是知道泥,让您输入的所有可以轻松地运行Lisp的验证。 tab完成,分级检查,互动测试等一应俱全。

作为一个例子,输入类似(+ 1 2)然后按Cx Ce 。 你会看到的结果,由运行Lisp语言的评估,在窗口的底部。 这使您可以测试各个表情当您输入到文件中。

下一步是写一个全功能的,也许:

(defun my-1+ (x)
    (+ x 1))

您可以加载此功能成多种方式运行Lisp的; 我通常使用CMx 。 现在,可以更改回REPL缓冲液( Cx b *slime-repl sbcl*或类似的)和类型(my-1+ 42)并观察结果43打印。

另一个带来的功能整合到运行Lisp的方法是编译并加载与整个文件Cc Ck

无论如何,这是用泥和Emacs的基础知识。 很显然,许多提供更多的功能,但是这应该给你煤泥Lisp程序的味道。 我会提到最后一两件事,Emacs是很大程度上是自文档,所以如果你想了解更多,Emacs可以帮助你。 虽然你的Lisp缓冲区,您可以键入Ch m获得在编辑Lisp中你可以使用命令的完整列表。 您可以点击链接以获取有关各功能的详细信息。

玩得开心!



Answer 2:

不要放弃VI / Vim的,只是因为人都喜欢泥很大比例。

我以前在这里SO写过关于这一点。 检查这些了:

  • 使用Vim的Lisp的发展
  • https://stackoverflow.com/questions/451329/what-is-the-preferred-way-to-run-lisp-web-application/558329#558329
  • 最好的Common Lisp的IDE
  • 是否有Lisp程序任何好的编辑,比Emacs的其他?

我会很高兴能在这里回答具体问题。



Answer 3:

你有没有尝试Lispbox ?



Answer 4:

Lispbox和泥都很好的答案,但如果你想要的东西就更简单了,只是一起玩,你可以考虑免费版LispWorks个人或快板CL免费版 。 我还没有使用,也可以在Linux上自己,但他们似乎都配备了图形用户界面。 将有堆大小或其他限制(因为完整的版本是不是免费的),但他们可能会更容易潜入。



Answer 5:

那么,一个良好的开端将是执行口齿不清的信息页的部分。

一般情况下,当你在Emacs解释语言工作,你编辑的源文件,并与下突(Emacs可以催生,在这种情况下,口齿不清进程的新工艺)进行交互。 可以评估一个SEXP(平衡表达),区域,或用简单的按键整个缓冲区。 这些命令代码发送到口齿不清过程和评估。

这种使用模式适用于贝壳,TCL,口齿不清,有翻译什么...

在维基百科上有很多很好的信息 。



Answer 6:

有不同的方式建立一个Lisp的环境,从人工方法外的开箱安装。

以下的答案必须是clbuild ,它总是下载你所有软件包的全新版本:

假设你有Emacs和SBCL已经安装了,下面让您能和煤泥运行。 (你还需要bash中,的darcs,CVS等,但FreeBSD的端口包括所有的这些,据我所知)。

$ darcs get --set-scripts-executable http://common-lisp.net/project/clbuild/clbuild
$ ./clbuild/clbuild install slime
$ ./clbuild/clbuild slime

你不必(实际上,不应该)修改您的.emacs这一点。 如果你已经有泥的手动安装之前玩过,清理出从的.emacs旧的变化。 clbuild做煤泥设置你。

如果你喜欢,clbuild也可以获取和建立一个最近的SBCL给你:

$ ./clbuild/clbuild install sbcl
$ ./clbuild/clbuild compile-implementation sbcl
# afterwards you can uninstall the FreeBSD-provided Lisp used for bootstrapping

至于你的使用问题:

  • CX 5 2让你玩第二个窗口
  • 抄送CK编译和加载当前缓冲区
  • 有内置选项卡完成,而且还完成其他功能。 我个人喜欢抄送弥模糊完成。
  • jrockway的回答对我在这里就不重复Emacs命令附加很好的提示


Answer 7:

我可以说,Emacs是用于编写Lisp的,因为我在大学为此用它的良好环境。 在*scratch*缓冲区提供了测试代码的好地方。 编译器文档应该说如何调用它们,这样你就可以写出你的文件到硬盘,然后在shell窗口中运行它们,或使用Emacs'模式中的一种集成编辑 - 编译和运行。 (对不起,我没有更具体的,它已经15年了。)



文章来源: Setting up a working Common Lisp environment for the aspiring Lisp newbie
标签: emacs lisp