3

我在Lisp Land of Lisp一书中读到lambda 函数是唯一的内置函数。但是我真的不明白这是怎么可能的,因为我认为您至少需要一个命令来加法,一个用于比较数字,一个用于将数据从一个变量移动到另一个变量。我想知道是否有人可以向我解释 lisp 是如何做到的。我不是数学家,所以如果可能的话,你能在没有大量复杂数学的情况下解释它吗?

4

3 回答 3

6

'Land of Lisp' 在这里所说的并不是lambda唯一的 Lisp 原语,而是(根据 Alonzo Church 的 lambda 演算,Lisp 有理论基础)可以用 来实现 Lisp 的其余部分lambda,因为 lambda 演算是等价的到通用图灵机。

对于大多数实际应用,lambda用于定义匿名函数。

于 2012-01-09T22:47:24.050 回答
5

这是理论和真正的编程语言之间的区别。

Lisp 从 Lambda Calculus 中获得了一些想法,但没有实现它。lambda演算描述了一个使用函数进行计算的系统。了解 Lambda 演算很有用,但是当您使用 Lisp 时,您不会使用纯 Lambda 演算进行编程。

作为一种编程语言,Lisp 具有各种数据类型和操作(数字、字符串、字符、cons 单元、符号、函数……)。

将其与图灵机和编程语言 C 之类的东西进行比较。

于 2012-01-03T17:06:43.023 回答
3

你在这里混淆了一些事情。lambda不是函数。它是一种内置于 Lisp 语言的结构。

任何实用的 Lisp 都会有很多内置函数;它至少需要car并且cdr将列表分开,并且一些原始算术函数不能根据其他函数来定义。(*)此外,Lisp 的“非功能”部分setf需要一些原语。

[*] 你可以在 Lisp中做Church 算术,但是由于 Lisp 的类型系统,你不能漂亮地打印结果但能否正确打印结果取决于 Lisp 变体。

于 2012-01-03T16:52:56.760 回答