创建一个帖子,记录自己学习 Elisp 的经过

我理解 if 函数的意思,返回值为 t 则返回 list 里的第一个元素,nil 则返回另外的元素。

但比较奇怪的是,(setq a 1) 和 (setq b 2) 后,返回的是 1。 而当 a、b 的值调转,返回的值是 2。

你的理解是对的。

至于你说的调转的情况,就不知道你是怎么操作的了。

我没怎么操作,就是用 org-babel, C-c C-c 运行了一下这段代码

我这没问题,肯定是你哪里搞错了。

这个函数的定义很直接,没什么歧义的。

我理解了,我刚才并没有用定义的函数来运行,而是直接改了定义函数里的值,有点小尴尬😂 主要是没有意识到,我已经定义了名为 our-max 的这一段程序。

重新安装了带 xwidget 的 emacs,然后装上 nov-xwidget 来阅读 epub,非常爽快。终于不用考虑把 epub 导入到 xx 软件里而直接阅读了。从阅读体验来说,nov-xwidget 非常好,而且流畅。当然功能也不那么完备,比如无法高亮、标注等,但这些在 emacs 生态里不是问题。用好 org-mode 和 org-oram 可以快速记录笔记。

近期更换了学习 lisp 的教材,进度可喜可贺,虽不能独立写出 package,然而在看 lisp 的代码时,开始具备一定的阅读能力,知道是什么顺序,大概会是什么作用。如果不知道,还可以直接查询函数。

近期的学习教材主要是《Practical Common Lisp》,我认为它的安排很好,一上来先教人安装了 lisp 的生产环境之后,就直接以一个「专辑数据库」为例子,让人直接上手,并从一步步的步骤中,理解自己所编写的代码,如何变成程序。对于一名非程序员来说,这种方式,可以很快地通过实操来理解代码的作用,找到感觉。

这和学习《 ANSI Common Lisp 中文版》的感受大不一样。ANSI Common Lisp,非常完整,十分细致,甚至有后面的练习题,来帮助人深入思考。但它太学术了,在学习过程中,总是不知道学了之后,用这些语法或函数能发挥什么作用。

所以我现在是《Practical Common Lisp》和 《 ANSI Common Lisp 中文版》一起结合来看。首先阅读前者,通过前者举的例子,来理解逻辑;而函数实际应用的细节,则查询后者——在逻辑理解了的情况下,阅读后者,往往很快就能理解,而且能够有一定的发散。这样子学,记得牢,学得快。

2 个赞