Lisp中的Symbol

Lisp中的Symbol(符号)这个概念在我熟悉的Python,Java,php中并不存在. 以下稍作总结以备忘:

一个Symbol在Lisp程序任意Scope中拥有唯一的字符名,用于在特定Scope中通过该Symbol来找到某个Variable(变量)或Function(函数). 这个概念类似其他语言中的Variable name(变量名)或Function name(函数名)。在python或Java中,变量名或函数名和名称所指的变量或函数同生同死,密不可分. 而Lisp的Symbol显得更为独立.

Symbol(符号) vs Viriable(变量)

  • Lisp程序中,Viriable(变量)的值存储在指向该变量的Symbol(符号)的value cell(值单元)中. 一个Symbol在利用value cell储存变量的同时也可以利用function cell(函数单元)存储Function(函数)或Macros(宏). (就是说一个Symbol可以同时被作为变量和函数的标示使用)

Symbol带来的优势

在其他语言中当你的程序执行完 x= 7 语句后 ...