Macos 如何为OSX建立一个通用的Lisp开发环境?(编程新手)

Macos 如何为OSX建立一个通用的Lisp开发环境?(编程新手),macos,emacs,lisp,common-lisp,Macos,Emacs,Lisp,Common Lisp,所以,我对编程非常陌生。 我想学习通用Lisp。 几年前,我使用IDLE编写和运行Python代码。在我准备学习Python之前,它所涉及的只是下载和安装一个软件 使用CommonLisp,事情似乎要复杂得多。我需要安装: GNU Emacs-某种文本编辑器,我必须在终端中运行 SBCL-编译器 SLIME-Emacs的一个附加组件,它允许我用Common Lisp(??)编写代码 Quicklisp 这个名单似乎永远在继续 有人能让我更简单地遵循这个过程吗? 我在自制软件的帮助下安装了SB

所以,我对编程非常陌生。 我想学习通用Lisp。 几年前,我使用IDLE编写和运行Python代码。在我准备学习Python之前,它所涉及的只是下载和安装一个软件

使用CommonLisp,事情似乎要复杂得多。我需要安装:

  • GNU Emacs-某种文本编辑器,我必须在终端中运行
  • SBCL-编译器
  • SLIME-Emacs的一个附加组件,它允许我用Common Lisp(??)编写代码
  • Quicklisp
  • 这个名单似乎永远在继续
有人能让我更简单地遵循这个过程吗?

我在自制软件的帮助下安装了SBCL和emacs。现在我只是想让黏液和所有东西一起工作

按照本网站的说明进行操作 ,我试图安装quicklisp。 但我不能激活粘液。当我启动emacs时,[M-x package install RET slime RET],它说“不匹配”

请像回答8岁孩子一样回答这个问题。
如果有一种更简单的方法来建立一个正常工作的通用Lisp环境,我会很高兴听到它。

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

编辑

另一种可能性是使用商业实现的免费版本提供的集成环境,可以是Franz(,free Express Edition),也可以是LispWorks()。然而,它们有局限性,Allegro CL需要非即时安装。此外,它们最好与Common Lisp的一些高级知识一起使用。

曾经有一个“包含电池”的发行版,与实用的Common Lisp一起使用。我不认为它特别流行,但我可能错了

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

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

(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)
;;软件包和MELPA软件包归档设置:
(需要“包”)
(添加到“文件包档案”列表中
“(“梅尔帕”。”https://melpa.org/packages/"))
(当(
(d) 启动EMAC和
M-x粘液


HTH.:-)

emacs使用lisp,但不是lisp。您可以使用任何编辑器。在手动尝试失败后,我从quicklisp(
(ql:quickload“quicklisp Slime helper”)
)安装了Slime。两年后:我建议将此列表和此列表放在通用Lisp Cookbook上。请注意,Allegro CL不提供本机Mac集成环境。集成环境基于X11和Gtk。它与Unix/Linux的相同。Allegro CL为MS Windows和X11/Gtk提供了本机环境。因此,只有Clozure CL和LispWorks基于苹果的Cocoa库在Mac上支持本机集成环境。@RainerJoswig您是对的,但是如果安装了XQuartz,AllegroCL也可以在Mac上使用。您还需要安装GTK+。请参阅:另请参阅如何更新到Mac OS X 10.10以及Allegro CL必须是非SMP才能运行IDE。。。对于初学者来说基本上什么都没有…这是Allegro CL在开始时自动安装的(请参阅)建议问题与堆栈溢出无关,所以我不想鼓励这种问答,但在一篇评论中,我不介意说我在OSX上使用LispWorks已经很多年了,对此非常满意。此外,我不认为它需要高级的公共Lisp知识;在一些大学课程中,我们向编程课的学生推荐它,因为它在主要的桌面平台(Windows、Linux和OSX)上安装和运行起来既快捷又方便。这就是说,我也选择使用Emacs、SLIME和CL,这是值得学习的。我所需要的只是一个创建Docker模板的好借口。
;; 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)