1、条件结构(即"if-then-else"结构)。
如今大家都认为这是理所当然的,可是Fortran I就没有这个结构。它仅仅有基于底层机器指令的goto结构。
2、函数也是一种数据类型。
在Lisp语言中。函数与整数或字符串一样,也属于数据类型的一种。它有自己的字面表示形式(literal representation)。可以储存在变量中,也能当作參数传递。一种数据类型应该有的功能,它都有。
3、递归。
Lisp是第一种支持递归函数的高级语言。
4、变量的动态类型。
在Lisp语言中,全部变量实际上都是指针,所指向的值有类型之分。而变量本身没有。复制变量就相当于复制指针。而不是复制它们指向的数据。
5、垃圾回收机制。
6、程序由表达式(expression)组成。
Lisp程序是一些表达式区块的集合。每一个表达式都返回一个值。
这与Fortran和大多数后来的语言都截然不同。它们的程序由表达式和语句(statement)组成。
7、符号(symbol)类型。
符号实际上是一种指针。指向储存在哈希表中的字符串。
所以。比較两个符号是否相等,仅仅要看它们的指针是否一样即可了,不用逐个字符地比較。
8、代码使用符号和常量组成的树形表示法(notation)。
9、无论什么时候,整个语言都是可用的。
Lisp并不真正区分读取期、编译期和执行期。你能够在读取期编译或执行代码;也能够在编译期读取或执行代码。还能够在执行期读取或者编译代码。