【问题标题】:Emacs using Common Lisp with cl-lib.elEmacs 使用带有 cl-lib.el 的 Common Lisp
【发布时间】:2017-06-30 14:08:21
【问题描述】:

我使用 ELISP 已经有一段时间了,现在我决定使用 Common Lisp,使用 Emacs 的 cl-lib.el 扩展名。问题是cl-lib.el 是为 Emacs 提供完整的 CLISP 扩展,还是部分支持 CLISP?另一个问题,如果我在一个包中包含cl-lib.el(我有多个包),这是否意味着cl-lib.el 也将应用于所有其他包?例如,如果我有:

(load "~/elisp/file1.el") ; (require 'cl-lib.el)
(load "~/elisp/file2.el") ; does it automatically use cl-lib.el or not?

【问题讨论】:

  • cl-lib.elcl.el 的子集。创建它是因为有些人想使用cl.el 的一些更常用的部分,而不需要在运行时加载所有cl.el
  • 如果您想在字节编译时加载 CL 宏,并且在运行时不需要任何 CL 函数,那么您不需要在运行时加载 cl-lib.elcl.el - 只需(eval-when-compile (require 'cl))(eval-when-compile (require 'cl-lib))
  • 旁注:CLISP 是特定 Common Lisp 编译器的名称,而不是语言的名称。
  • @Drew:cl-lib 并不是cl 的子集。它更像是cl 的继承者,主要区别在于命名(所有定义的名称都以cl- 前缀开头)。 cl 的一些部分在引入cl-lib 时已移至核心(主要是setf),并且完全删除了一些稀有元素,并且还添加了其他稀有元素,但总的来说,它们几乎具有相同的内容。

标签: emacs common-lisp elisp


【解决方案1】:
  1. 不; cl-lib.elcl.el 都不等同于 Common Lisp。一点也不。

  2. 一旦加载了库,就会加载它。如果您加载file1 并且它加载了cl-lib,那么当您稍后加载file2 时,cl-lib 已经加载。重要的是加载顺序。

【讨论】:

  • 我希望听到别的声音!我希望有一天我们有一个用 Common Lisp 编写的完整 Emacs。
  • 我也是。 ;-) 我怀疑它会不会出现,但我认为 Common Lisp 对 Emacs 来说会很棒。
【解决方案2】:

如果您希望 cl / cl-lib 提供比他们更多的 Common Lisp,您可能对 https://www.emacswiki.org/emacs/EmacsCommonLisp 感兴趣

【讨论】:

  • 感谢分享。我已经检查过了。关于 cl-lib 能做或不能做的不是很清楚。
猜你喜欢
  • 2011-05-24
  • 2013-06-27
  • 1970-01-01
  • 2011-04-19
  • 2017-08-18
  • 2019-08-19
  • 2019-01-18
  • 2017-02-04
  • 2012-01-16
相关资源
最近更新 更多