判断对错?
Common Lisp有很多功能。所有这些功能都是使用这一小组核心功能构建的(或可以构建的):CAR,CDR,CONS,ATOM,EQ,QUOTE,COND,LAMBDA,LABEL,NULL。
如果答案为False,您能提供一个使用核心功能无法实现的功能示例吗?核心功能列表可能不完整,还需要另外两个核心功能吗?
答案 0 :(得分:6)
[..]使用[..]构建所有这些功能(或可以构建)
重要的部分是可以,你已经想到了。 (几乎*)所有(a)Lisp都可以使用一小组核心函数(形式)构建,这是Lisp之美的一部分。但实际上,在Lisp中未实现的函数(表单)集合是 lot 更大。
为什么实现很难实现那么多,当他们只能实现那个最小的核心?举一个小例子,想想这个表达式:
(+ 1 2)
你可以实现一个只使用一小组核心函数的Lisp,它能够(给定一个合适的数字解析器)来评估这个表达式。 但它会非常缓慢!我们可用的系统(CPU)主要提供许多不同的指令,Lisp实现(尤其是编译实现)尽可能地利用它们以便允许快速执行Lisp程序。并且,回到示例,这也意味着不会使用peano arithmetic进行实际计算,而是使用硬件中实现的“布尔逻辑算法”。
如果答案为False,您能提供一个使用核心功能无法实现的功能示例吗?
这很简单,你如何实施format
?任何不属于编程语言“算法”性质的东西,即与“外部世界”接口的东西,往往不是自己实现的,而是依赖于底层系统 - 最常见的是C或汇编。
答案 1 :(得分:2)
假。任何处理除conses之外的数据类型的函数都无法从您提出的核心集中实现:例如,NUMBER
和SYMBOL
等重要类型根本无法处理。任何同样执行I / O的函数,也可能是其他语言的大部分。
您的列表听起来像是来自对Lisp 1.5的建议核心的一些不完整的描述。