1. 程式人生 > 實用技巧 >424_emacs lisp中list以及vector的map操作

424_emacs lisp中list以及vector的map操作

全部學習彙總: https://github.com/GreyZhang/g_lisp

學習小結一下map功能,其實我覺得這是一種算是更加簡潔的迴圈。但是,與迴圈方式相比這明顯是一種不同的處理思想。

以下是我的一部分測試:

接下來,針對每個測試做一下解釋。

  1. 第1行,把vector中的每一個元素增加1,其中1+是emacs lisp中的一個函式;
  2. 第4行,這個操作是失敗的,這裡我又犯了一個錯誤。這裡,我應該使用的是一個list的引用,而我上面的這個寫法其實是把第一個引數誤認為了是一個函式。為什麼vector的處理不存在這個問題?自然是不存在的,函式的引用是從小括號開始的。
  3. 第6行其實是上面的一個更正;
  4. 第9行、第12行,分別測試了CAR以及CDR兩個函式的使用;
  5. 14行,這個其實是很有特點的了。之前我沒有意識到?或許,也曾經意識到又忘記了?這裡的這個lambda表示式能夠允許程式設計者把隨時想到的一小段程式碼以函式的形式應用到map,這個確實是很強大。如果使用其他的程式語言,要麼就是把這段程式碼裝入一個新的迴圈,即使是有一個迴圈的方式或許也得重新設計一個函式。

這段知識,總是讓我聯想到MATLAB的矩陣運算或者GPU矩陣運算。很多複雜的東西,確實通過這種模式得到了一定程度上的簡化。