R’s C API中的SEXP数据类型究竟是什么?为什么使用它?

我知道SEXP上的维基百科页面,我知道它代表符号表达。 我知道(含糊地)SEXP是在Lisp中引用树数据结构的符号,但我想知道是什么促使开发人员在C SEXP中调用R对象的数据类型。 为何选择SEXP?

我也很困惑,因为如果R是用C和Fortran制作的,为什么要使用Lisp的符号呢? 或者SEXP是一个更通用的术语? 也许我在这里遗漏了一些东西。

R在内部类似于具有S兼容语法的Scheme。 很多R的内部都来自Scheme概念,比如cons单元和词汇环境。

早在90年代末期,我就为R开发了一种新的(当时)序列化格式; 看看我的荣誉项目论文 ,它解释了很多这方面的内容。 (该文件上的电子邮件地址不再有效,所以不要使用它。)

R在C和Fortran中实现的事实并没有真正影响语言的function。 许多编程语言,包括许多Lisp解释器,都是用C语言编写的。

R具有S表达式,因为它被写入它应具有的语言规范,以及它们的确切工作方式的描述。

R可能称之为“S-Expressions”的原因是因为它就是这样 。 他们不只是使用一些Lisp术语,他们正在使用直接从Lisp世界中获取的一个function,并正确地命名它。