在人工智能语言中我们应该接触过Scheme。根据介绍,Scheme和CommonLisp是两种主要的Lisp方言之一,也就是说,在讲Lisp语言的时候,我们也包括了讲Lisp或者CommonLisp语言。Scheme语言的地位是由一系列的Lambda论文决定的。见https://en.wikipedia.org/wiki/History_of_the_Scheme_programming_language#The_Lambda_Papers。Scheme的后缀扩展名是.scm或者.ss。Scheme是动态强类型的语言,具有词法作用域,当然是函数式语言。此外,Scheme的特点是它是第一个实现了头等延续的语言(这里的延续指的是计算机程序的控制状态,头等延续指的是可以创建,保存、赋值程序的状态给一个变量,并根据需要恢复程序的运行上下文)。对于延续的介绍可见https://en.wikipedia.org/wiki/Continuation。
Scheme对于CommonLisp的设计产生了重要的影响。Scheme的开发其实是基于实现当时的Actor并发模型的思想。Scheme的最新标准是R7RS,制定于2013年。
描述Scheme的最佳的方式或许是这样的。首先,Scheme的语法风格来自于简洁的S-表达式。然后数据结构是基于表处理的,刚开始的时候我们会看到很多的表处理的模式(如果有可能的话,我们也可以在其它的编程语言中模仿它),这种表处理的模式导致了我们很容易在运行的时候动态地创建Scheme代码。另外就是,它支持头等函数。虽然声称Lisp是函数式语言,但是其实Lisp的基本思想其实并不是高阶函数,而是所谓的抽象重写系统。另外的特点,就是对于\(\lambda\)-演算和词法作用域的支持了。