245_emacs lisp progn函数的使用

完整的common lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp

    继续学习emacs,继续学习lisp,继续学习emacs lisp。

    接触lisp的时候,基本上上来就是从函数开始的。至少,我是这样。其实倒也好理解,这个能够更快让我们看到效果。学习C语言的时候,不也是先使用printf输入一个hello world嘛!

    不过,在elisp中,还有一个专门控制顺序结构的东西叫做progn。其实,这个东西我个人还是有印象的,我记得有一个中文的elisp教程中是讲过这个东西的。但是,出于我自己反复强调了好几遍的一个原因——我似乎对于lisp有一定的免疫力,学习总是不顺畅,因此这个也只是有印象而已,没有掌握。

    今天,学习了解一下progn。首先,看文档描述:

245_emacs lisp progn函数的使用

    这里,不仅仅有功能描述,还有一些历史性变迁的描述。看起来,这是一个很古老的功能。这也解答了我一直存在的一个问题:这个东西的存在意义是什么?为什么我不能再写一个函数,执行这个函数把这个功能代替掉?就像我写C代码一样。其实,这么看,这个功能在一定程度上来说算是一个历史痕迹。如果类比其他的编程语言,似乎很多时候我们压根儿不在乎这个,毕竟代码今本上都是从前往后逐渐执行的。

    做一个测试:

245_emacs lisp progn函数的使用

    前面小结过print,结合之前的信息,这里就有点意思了。为什么,前面两个print只出现了一行信息,而后面的却出现了两个呢?这也算是一个特殊之处,前面两个只是进行求值,后面这个才会作为返回值。

245_emacs lisp progn函数的使用

    以上是elisp的文档描述。

完整的common lisp的学习集合整理如下:

https://github.com/GreyZhang/g_lisp