424_emacs lisp中list以及vector的map操作
全部学习汇总: https://github.com/GreyZhang/g_lisp
学习小结一下map功能,其实我觉得这是一种算是更加简洁的循环。但是,与循环方式相比这明显是一种不同的处理思想。
以下是我的一部分测试:
接下来,针对每个测试做一下解释。
- 第1行,把vector中的每一个元素增加1,其中1+是emacs lisp中的一个函数;
- 第4行,这个操作是失败的,这里我又犯了一个错误。这里,我应该使用的是一个list的引用,而我上面的这个写法其实是把第一个参数误认为了是一个函数。为什么vector的处理不存在这个问题?自然是不存在的,函数的引用是从小括号开始的。
- 第6行其实是上面的一个更正;
- 第9行、第12行,分别测试了CAR以及CDR两个函数的使用;
- 14行,这个其实是很有特点的了。之前我没有意识到?或许,也曾经意识到又忘记了?这里的这个lambda表达式能够允许程序设计者把随时想到的一小段代码以函数的形式应用到map,这个确实是很强大。如果使用其他的编程语言,要么就是把这段代码装入一个新的循环,即使是有一个循环的方式或许也得重新设计一个函数。
这段知识,总是让我联想到MATLAB的矩阵运算或者GPU矩阵运算。很多复杂的东西,确实通过这种模式得到了一定程度上的简化。