lisp作为“函数式编程”语言,与c语言有何不同

并不是可以自定义函数就叫函数式编程语言啊维基C语言第一行就说明C是过程式,并且全文没有「函数式」三个字
■网友
1,此函数非彼函数。 lisp 里函数是first class,换句话说一个函数是可以当作其他函数的返回值 c 里边函数是third class,不能作为其他函数返回值,不能当其他函数的参数。c可以说是algo方言,algo像英语,lisp更像数学。2,函数式语言通有的特性是parameter polymorphic,通俗点说你用c写了个"int quickSort(int arr)",那这函数就只能用来比较int,但是函数式语言你就能写quickSort(aList, aMethod), 其中aList是任意类型用来排序的list, aMethod是用来判断该类型关系的函数,这样能对所有类型排序。3,函数式语言不存在变量,只能出于方便起见声明常数。刚开始你给几个参数,然后函数之间互相调用,然后给你一个结果,这就是lisp. 同时没变量也就没有循环,想重复就得递归。可想而知并不是所有我们想做的东西都可以用递归解决的,所以在很多需要特殊数据结构的地方lisp很不好使,比如说symbol table。4,函数式语言里允许有匿名函数(大函数里套小函数,小函数里套小小函数,大伙都没有名字),这就需要创造cloures进行deep binding,要不然就不知道匿名函数里的非本地引用在哪了。C里边没有cloures,用全局变量能达到相同效果,不过全局变量容易把程序弄乱,少用。5,lisp语义简单,基于s表达式,可以自己解释自己。c应该是不行。6, 学点lisp能让你从新的角度思考编程,很有启发性。伸手可耻,自己学吧。1A: Overview and Introduction to Lisp祝楼主早日成大牛。
■网友
我觉得题主问这个问题之前应该先去查下函数式编程。


    推荐阅读