劣质lisp的劣势如何?

Ben*_*rek 9 lisp emacs elisp ess

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

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

小智 13

劣质模式是指作为emacs的子过程运行的模式.

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

$ pstree 62238
--= 62238 smt /usr/local/Cellar/emacs/HEAD/Emacs.app/Contents/MacOS/Emacs
Run Code Online (Sandbox Code Playgroud)

在我运行一个劣质的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
Run Code Online (Sandbox Code Playgroud)

另一种说法可能是"劣等"与此上下文中的前缀"sub-"同义.


Rai*_*wig 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 Interface),来自Franz,Inc.的Allegro CL
  • SLIME(Emacs的高级Lisp交互模式)

Emacs还有一个简单的内置工具,用于运行劣质的Lisp:External Lisp.

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