关于lisp:不知多久能学会-Elisp

59次阅读

共计 1216 个字符,预计需要花费 4 分钟才能阅读完成。

引言

在一个春天的夜晚,良久也没怎么出门的我,偶尔发现 Emacs Lisp 程序可能像脚本程序那般运行,而不仅仅是用于编写 Emacs 的配置文件或其插件。这个发现,让我感觉无心中发现了一宗瑰奇的宝藏。

对于 Lisp 语言的源远流长及其与世上最好的文本编辑器 Emacs 的莫逆之交,有很多书籍和文章早已给出了庄重的介绍,在此我就不用再行考据和论述了……没人发稿费,就没必要凑字数。上面,大抵总结一下为什么我会感觉能像脚本程序那般运行的 Emacs Lisp 程序蕴含着一宗宝藏:

  • Emacs Lisp 具备着通用的编程语言应该具备的元素,可用于编写在计算机上解释运行的程序。
  • Emacs Lisp 是一种 Lisp 方言,继承了 Lisp 语言的一些重要个性,例如反对泛函编程(Functional Progarmming),可基于宏实现语法扩大。与那些更好的 Lisp 方言相比,Emacs Lisp 存在一些差距 1,却也无伤大雅,因为在精通 Emacs Lisp 的根底上,再学习其余更好的 Lisp 方言,仅须要再了解寥寥几个新的概念,诸如续延(Continuation)、卫生宏(Hygienic macro)等。
  • 应用 Emacs Lisp 语言编写的程序具备跨平台性。Emacs 可在 GNU/Linux,Windows,Mac OS 以及 FreeBSD 等零碎上运行,因此应用 Emacs Lisp 语言编写的程序通常可毫无阻碍地这些零碎中运行。
  • Emacs Lisp 程序可调用 C 程序库里的函数 2,因此其性能瓶颈可基于 C 程序予以补救。
  • Emacs Lisp 具备其余编程语言可能没有的一些个性,这个个性并不来自语言,而是来自 Emacs 本身。迄今为止,Emacs 仍然称得上世上最好的文本编辑器,它在文本处理方面长期以来凝聚了泛滥智慧,而这些智慧早已积淀造成了一个宏大的 Emacs Lisp 代码库。这是否意味着,在我应用 Emacs Lisp 编写一个程序用于解决某种特定格局的文本时,有近乎取之不尽的代码可用呢?

诚然,Emacs Lisp 有一些先天不足 3。不过,对于文本处理方面的工作而言,Emacs 本身的存在足以证实这些先天不足是次要矛盾。我所说的能像脚本程序那般运行的 Emacs Lisp 程序蕴含着一宗宝藏,次要针对编写文本处理程序而言。

这份文档所讲述的,是我集体希图生产这宗宝藏的一些很小的尝试,只是这些尝试近似于 Emacs Lisp 教程或笔记的模式。我不是 Emacs Lisp 专家,只是一个心愿 Emacs Lisp 能在生活中施展一些作用的人。在之后的章节里,我将像许多人那样,将 Emacs Lisp 简称为 Elisp,以稍微加重手指关节的劳损。

目录

  • 缓冲区和文件
  • 文本解析
  • 变量
  • 迭代
  • 文本匹配
  • 缓冲区变换
  • 命令行程序界面
  • 文本跨行提取
  • 动静模块

后记

还没想好怎么写。


  1. https://www.emacswiki.org/ema…
  2. Emacs 自版本 25 开始反对加载 C 语言写的动静库。↩
  3. https://www.emacswiki.org/ema…
正文完
 0