我在书Land of Lisp中读到lambda函数是唯一的内置函数。但是我真的不明白这是怎么可能的,因为我认为你至少需要一个加法命令,一个用于比较数字,一个用于将数据从一个变量移动到另一个变量。我想知道是否有人可以向我解释lisp是如何做到的。我不是数学家,所以如果有可能的话,你可以在没有大量复杂数学的情况下解释它吗?
答案 0 :(得分:6)
'Lisp之乡'在这里说的不是lambda
是唯一的Lisp原语,而是(根据Alonzo Church的lambda演算,Lisp有理论基础)可以实现Lisp的其余部分使用lambda
,因为lambda演算相当于通用图灵机。
对于大多数实际应用,lambda
用于定义匿名函数。
答案 1 :(得分:5)
理论与实际编程语言之间存在差异。
Lisp接受了Lambda Calculus的想法,但没有实现它。 lambda演算描述了使用函数进行计算的系统。理解Lambda微积分很有用,但是当你使用Lisp时,你不会用纯Lambda微积分编程。
作为一种编程语言,Lisp拥有各种数据类型和操作(数字,字符串,字符,缺点单元格,符号,函数......)。
将它与图灵机和编程语言C进行比较。
答案 2 :(得分:3)
你在这里混淆了一些事情。 lambda
不是函数。它是Lisp语言中的一个构造。
任何实用的Lisp都有很多内置函数;至少需要car
和cdr
选择列表,并且不能根据其他函数定义一些原始算术函数。(*)此外,Lisp的“非功能”部分如{ {1}}需要一些基元。
[*]您可以在Lisp中执行Church arithmetic,但是由于Lisp的类型系统,您无法打印结果,但是否可以正确打印结果取决于Lisp变体。