使用cl-lib.el的Common Lisp编写Emacs

3

我已经使用ELISP一段时间了,现在我决定使用 Emacs 的cl-lib.el扩展来使用 Common Lisp。问题是,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?

1
cl-lib.elcl.el 的一个子集。它的创建是因为有些人想要使用 cl.el 中一些常用的部分,而不需要在运行时加载 cl.el 的全部内容。 - Drew
如果您想在字节编译时加载CL宏,并且在运行时不需要任何CL函数,则无需在运行时加载cl-lib.elcl.el,只需(eval-when-compile (require 'cl))(eval-when-compile (require 'cl-lib))即可。 - Drew
3
注:CLISP是特定的Common Lisp编译器的名称,它不是语言的名称。 - Luís Oliveira
3
@Drew说:“cl-lib并不是cl的子集。它更像是cl的后继者,主要区别在于命名(所有定义都以cl-前缀开头)。当引入cl-lib时,有几个部分从cl转移到了核心中(主要是setf),一些罕见的元素被完全删除,而其他罕见的元素也被添加,但总体上,它们的内容基本相同。” - Stefan
2个回答

4
  1. 不,cl-lib.elcl.el都不等同于Common Lisp。完全不同。

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


我本来希望听到其他的消息!我希望有一天我们能够拥有一个完整的用Common Lisp编写的Emacs。 - DJJ
我也是。;-) 我怀疑它是否会出现,但我认为Common Lisp对于Emacs来说将是很棒的。 - Drew

2

1
谢谢分享。我已经看过了。它并没有很清楚地说明cl-lib能做什么或不能做什么。 - DJJ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接