如何为OSX设置Common Lisp开发环境? (编程新手)

时间:2015-12-14 08:59:09

标签: macos emacs lisp common-lisp

所以,我对编程很陌生。 我想学习Common Lisp。 几年前,我使用IDLE编写和运行Python代码。所有涉及的内容都是在我准备学习Python之前下载并安装一个软件。

使用Common Lisp,事情看起来要复杂得多。我需要安装:

  • GNU Emacs - 我必须在终端中运行的某种文本编辑器
  • SBCL - 编译器
  • SLIME - Emacs的附加组件,它允许我在Common Lisp中编码(????)
  • Quicklisp
  • 该列表似乎永远存在

有人可以让这个过程更简单吗?

我在Homebrew的帮助下安装了SBCL和emacs。现在我只是想让SLIME与所有东西一起工作。

按照本网站的说明操作 https://gist.github.com/CodeOmar/9477900#install-slime,我试图安装quicklisp。 但我无法激活SLIME。当我启动emacs,[M-x package-install RET slime RET]时,它说“不匹配”。

请回答这个问题,比如我8岁了。 如果有一种更简单的方法来设置一个有效的Common Lisp环境,我很高兴听到它。

2 个答案:

答案 0 :(得分:4)

在我看来,在Mac OS X环境中使用Common Lisp的最简单方法是从Apple Store安装精细Clozure CL implementation。它是标准ANSI Common Lisp的完整实现,具有非常简单的Mac友好型IDE。掌握了语言后,可以使用Slime安装Emacs,并选择继续使用Clozure CL或传递给SBCL(或使用其他实现)。

被修改

另一种可能性是使用免费版本的商业实现提供的集成环境,可以是Franz(Allegro CL,Free Express Edition),也可以是LispWorks(LispWorks personal edition)。但是,它们有局限性,Allegro CL需要立即安装。此外,它们最适合使用Common Lisp的一些高级知识。

答案 1 :(得分:1)

曾经有一个“电池包含”发行版附带 Practical Common Lisp 。我不认为这是特别的,但我可能是错的。

以下是我设置柠檬或Emacs环境的方法;我有一个类似的VIM和SLIMV安装。警告:我在非标准的地方安装了几个CL实现。

(a)使用git克隆当前的SLIME(我的正好在~/elisp/slime,添加你自己的调味品以满足你的口味):

$ mkdir ~/elisp
$ cd ~/elisp
$ git clone https://github.com/slime/slime.git

(b)将以下代码段添加到.emacs:

;; Setup SLIME
;; Use the copy in my home directory.
(let ((my-slime-directory (expand-file-name "~/elisp/slime")))
(add-to-list 'load-path my-slime-directory)
(setq slime-backend (expand-file-name "swank-loader.lisp" my-slime-directory)))

;; If you installed your CL in a "standard place", such as /opt/local/bin,
;; you can delete the following form/6 lines. If you have multiple CLs installed,
;; this is an example of how you enumerate them; C-u M-x slime then lets
;; select one by name. Default is the first CL implementation in the list.
(setf slime-lisp-implementations
   `((ccl64 (,(expand-file-name "~/.local/bin/ccl64"))
             :env (,(concat "CCL_DEFAULT_DIRECTORY=" (expand-file-name "~/ccl"))))
     (clisp ("clisp"))
     (ecl (,(expand-file-name "~/ecl-experimental/bin/ecl")))
     (sbcl (,(expand-file-name "~/.local/bin/sbcl")))))

;; Mac OSX owns C-up and C-down, so arrange for history
;; navigation to do something useful via C-c p and C-c n.
(eval-after-load 'slime
  `(progn
     (define-key slime-prefix-map "p" 'slime-repl-backward-input)
     (define-key slime-prefix-map "n" 'slime-reply-forward-input)))

;; Useful slime custribs
(require 'slime-autoloads)
(add-to-list 'slime-contribs 'slime-repl)
(add-to-list 'slime-contribs 'slime-autodoc)
(add-to-list 'slime-contribs 'slime-fancy)

(c)如果您需要或想要MELPA,这就是.emacs中您应该拥有的内容:

;; Package and MELPA package archive setup:
(require 'package)
(add-to-list 'package-archives
             '("melpa" . "https://melpa.org/packages/"))
(when (< emacs-major-version 24)
  ;; For important compatibility libraries like cl-lib
  (add-to-list 'package-archives '("gnu" . "http://elpa.gnu.org/packages/")))
(package-initialize)

(d)启动Emacs和M-x slime

HTH。 : - )