Lisp语言的核心是什么

这个世界上,编程语言层出不穷。Lisp语言被称作一个高峰(另一个高峰是c语言)。

那么,Lisp语言最核心的内容是什么?

阅读古老的文献,或者尝试动手写个Lisp的解释器,就会发现,Lisp最核心的内容是λ演算

Lisp编写的程序具有许多的括号,这些括号表示的是S表达式。λ演算基于S表达式来实现。数学上的λ演算很难阅读,因为常常省略括号,使用某种默认的次序来结合。而阅读基于S表达式的λ演算就容易的多,因为括号多,所以次序看的清楚很多。

实现S表达式,则用满屏的car和cdr,以及cons。

编程语言最核心的东西是分支和循环。这一点从世界上最精简的语言之一BrainFK可以看出来。

原始的Lisp用cond实现分支,用Label配合λ演算实现递归(可以完成循环)。后来人们发现,不用Label,单纯用λ演算就可以实现递归,如著名的Y组合子。cond 可以用更简单的 if 表达式代替。

Lisp中,数据与程序的表示是一致的。可以用quote把程序当成数据;可以用eval把数据当成程序。

空表,表尾,逻辑假都用nil来表示。

判断是否为空,用null函数。

判断是否相等,用eq函数。

在最精简的设计下,完成了分支、S表达式;

在S表达式的方式下,实现了λ演算;

在λ演算的基础上实现了递归;

在递归的基础上完成了全局的eval函数。

某些实现则用eval和apply交互调用,像太极图一样,阴阳消息。

λ演算是Lisp语言的核心

(指针是c语言的核心。)

(抽象是编程方法的核心。)

你可能感兴趣的:(Lisp语言的核心是什么)