劣质lisp的劣势如何?

时间:2014-08-10 03:02:41

标签: emacs lisp elisp ess

当我开始学习lisp,emacs和ess(Emacs Speaks Statistics)时,我遇到了这个劣质的概念 - 这个或那个。例如,有一个inferior-ess-modeinferior-lispInferior Emacs Lisp Mode

在所有这些情况下,似乎某些解释语言在emacs中运行,您可以在缓冲区内与其进行交互。 但为什么他们低劣,他们的劣势是什么?

2 个答案:

答案 0 :(得分:13)

劣等模式是指作为emacs的子进程运行的模式。

例如,当我启动emacs时,这是我的进程树:

$ pstree 62238
--= 62238 smt /usr/local/Cellar/emacs/HEAD/Emacs.app/Contents/MacOS/Emacs

运行劣质tcl shell之后,这就是我的进程树的样子:

$ pstree 62238
-+= 62238 smt /usr/local/Cellar/emacs/HEAD/Emacs.app/Contents/MacOS/Emacs
 \-+= 62359 smt /bin/sh /usr/bin/wish
   \--- 62361 smt /usr/bin/../../System/Library/Frameworks/Tk.framework/Version

另一种说法可能是"劣等"是前缀" sub - "的同义词在这种情况下。

答案 1 :(得分:8)

我认为 Inferior Emacs Lisp Mode (ielm)是一个错误的名称。这应该命名为 Interactive Emacs Lisp Mode 。使用ielm Emacs Lisp并不是作为一个劣等的Lisp运行。它是内置Emacs Lisp的读取eval打印循环。 GNU Emacs确实将它命名为 Inferior Emacs Lisp Mode ,但如果查看源代码,它会直接使用内置的Emacs Lisp eval来评估表达式。它只是重用了一些基础结构( comint )来处理劣质解释器(比如Lisps,shell,......)。

通常 Inferior Lisp 意味着它是一个受Emacs控制的(通常是外部的)Lisp系统。它也不需要是Emacs Lisp。通常它是一些其他Lisp方言,如Common Lisp。 Common Lisp对Emacs和Common Lisp有几个扩展,因此它作为一个低级Lisp运行,具有很多Lisp开发环境的功能(调试器,检查器,源定位器......):

  • ILISP Inferior Lisp ),过时了
  • ELI Emacs-Lisp接口),来自Franz,Inc。for Allegro CL
  • SLIME Emacs的高级Lisp交互模式

Emacs还有一个简单的内置工具,用于运行次级Lisp External Lisp

  • inferior-ess-mode:控制R子流程
  • inferior-lisp:一个Lisp子流程
  • inferior-emacs-lisp-mode:内置的Emacs Lisp作为读取eval打印循环