文章标题

来源:互联网 发布:大数据应用软件 编辑:程序博客网 时间:2024/06/07 22:43

Haskell语言

这里写图片描述


1)学号:16340139

2 ) 中山大学数据科学与计算机学院


目录

1.Haskell语言简介

2.Haskell语言与c语言的

3.Haskell语言的优点

4.初学Haskell语言的体会


1 )Haskell语言简介

Haskell(发音为 /ˈhæskəl/)是一种标准化的,通用纯函数式编程语言,有非限定性语义和强静态类型。它的命名源自美国逻辑学家Haskell Brooks Curry,他在数学逻辑方面的工作使得函数式编程语言有了广泛的基础。在Haskell中,“函数是一等公民”。作为函数式编程语言,主要控制结构是函数。Haskell语言是1990年在编程语言Miranda的基础上标准化的,并且以λ演算(Lambda-Calculus)为基础发展而来。具有“证明即程序、结论公式即程序类型的特征。这也是Haskell语言以希腊字母「λ」(Lambda)作为自己标志的原因。Haskell语言的最重要的两个应用是GHC(Glasgow Haskell Compiler)和Hugs(一个Haskell语言的解释器)。

2)Haskell语言的特性

①haskell是一门纯函数式编程语言

函数式编程语言中的函数能做的唯一事情就是求值,因而没有副作用。这是有局限性,不过好处也正源于此:若以同样的参数 调用同一函数两次,得到的结果总是相同。这被称作“引用透明”。如此一来编译器就可以理解程序的行为,你也很容易就能验证一个函数的正确性,继而可以将一些简单的函数组合成更复杂的函数。

②haskell是惰性的

若非特殊指明,函数在真正需要结果以前不会被求值。再加上引用透明,你就可以把程序仅看作是数据的一系列变形。假设你有一个List:xs = [1,2,3,4,5,6,7,8],还有一个函数doubleMe,它可以将一个List中的所有元素都乘以二,返回一个新的List。若是在命令式语言中,把一个List乘以8,执行doubleMe(doubleMe(doubleMe(xs))), 得遍历三遍xs才会得到结果。而在惰性语言中,调用doubleMe时并不会立即求值,而需要结果才会执行,且只需要经历一遍list即可。惰性语言中的计算只是一组初始数据和变换公式

③haskell 是静态类型的

当你编译程序时,编译器需要明确哪个是数字,哪个是字符串。这就意味着很大一部分错误都可以在编译时被发现,若试图将一个数字和字符串相加,编译器就会报 错。haskell拥有一套强大的类型系统,支持自动类型推导,可以让你的程序更加简练。假设有个二元函数是将两个数值相加,你就无需声明其类型,这个函数可以对一切可 以相加的值进行计算。

3 ) Haskell语言的优点

Haskell语言是一种非常强大的工具,采纳了很多高级概念,因而它的代码优雅且简练。与同层次的命令式语言相比,haskell的代码往往会更短,更短就意味着更容易理解,bug也就更少。举一个简单的例子,同样是比较大小,Haskell中代码如下:
这里写图片描述
而在c语言中,代码是这样的:
这里写图片描述
很明显,在这一示例中,Haskell语言的代码要比c语言简洁许多,提高了效率,同时更容易让人理解,出错的几率也相对更小。因此,Haskell语言的确是一种非常强大的工具。

4 ) 初学Haskell语言的体会

开学初仅仅因为课程名字便选了函数程序设计这门课,因此接触了Haskell这门语言。因为没有编程基础,一开始上这门课还是很吃力的,并且由于Haskell语言学习具有陡峭的学习曲线,这又增加了难度。不过这也有一定的好处,现在同时学习c语言和Haskell语言,两者的学习内容可以互为补充,相信对两门课都有所帮助。此外,Haskell语言还能提供与C语言不同的思维方式,也会有助于程序的开发,这对今后的发展必定是有好处的。希望能在这学期的学习中为以后积累更多有用的知识吧。


最后分享一条没什么关系的公式:

E=mc2

参考文献

0 0
原创粉丝点击