1)haskell是什么语言?
Haskell是一种标准化的、通用纯
函数式编程语言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家Haskell Brooks Curry,他在数学逻辑方面的工作使得函数式编程语言有了广泛的基础。在Haskell中,函数是一等公民。作为函数式编程语言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算(Lambda-Calculus)为基础发展而来。具有“证明即程序、结论公式即程序类型”的特征。这也是Haskell语言以
希腊字母「λ」(Lambda)作为自己标志的原因。
2)haskell和C语言有什么区别?
区别非常大。haskell是函数式编程语言,C属于过程式编程语言。
1,此函数非彼函数。
haskell里函数是first class,换句话说一个函数是可以当作其他函数的
返回值C 里边函数是third class,不能作为其他函数返回值,不能当其他函数的参数。
2,函数式语言通有的特性是parameter polymorphic,通俗点说你用c写了个"int quickSort(int arr[])",那这函数就只能用来比较int,但是函数式语言你就能写quickSort(aList, aMethod), 其中aList是任意类型用来排序的list, aMethod是用来判断该类型关系的函数,这样能对所有类型排序。
3,函数式语言不存在变量,只能出于方便起见声明常数。刚开始你给几个参数,然后函数之间互相调用,然后给你一个结果,这就是函数式语言. 同时没变量也就没有循环,想重复就得递归。可想而知并不是所有我们想做的东西都可以用递归解决的,所以在很多需要特殊
数据结构的地方函数式语言很不好使,比如说symbol table。
4,函数式语言里允许有匿名函数(大函数里套小函数,小函数里套小小函数,大伙都没有名字),这就需要创造cloures进行deep binding,要不然就不知道匿名函数里的非本地引用在哪了。C里边没有cloures,用
全局变量能达到相同效果,不过全局变量容易把程序弄乱,少用。
5, 学函数式语言能让你从新的角度思考编程,很有启发性。