所以,我对编程很陌生。 我想学习Common Lisp。 几年前,我使用IDLE编写和运行Python代码。所有涉及的内容都是在我准备学习Python之前下载并安装一个软件。
使用Common Lisp,事情看起来要复杂得多。我需要安装:
有人可以让这个过程更简单吗?
我在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环境,我很高兴听到它。
答案 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。 : - )