客服咨询

意见反馈

Haskell函数程序设计基础
计算机信息及网络安全//
0.0
190
视频
7.5
课时
18.75
介绍
目录

课程概述

<p>&nbsp; &nbsp; &nbsp; &nbsp;本课程用函数式程序设计语言Haskell讲解现代函数式程序设计的基本思想方法。&nbsp; &nbsp;</p><p>&nbsp; &nbsp; &nbsp; &nbsp;高级程序设计语言大致可分为命令式和声明式。命令式语言如C、Java和Python等,这种语言的程序用一个语句序列描述如何一步步完成一个计算,特点是有副作用。例如,计算1至n的和,命令式语言通常形如:&nbsp;&nbsp;</p><p><code class="brush:cpp;toolbar:false">s&nbsp;=...

课程目标

考核评价

讲师介绍

乔海燕

详细介绍

       本课程用函数式程序设计语言Haskell讲解现代函数式程序设计的基本思想方法。   

       高级程序设计语言大致可分为命令式和声明式。命令式语言如C、Java和Python等,这种语言的程序用一个语句序列描述如何一步步完成一个计算,特点是有副作用。例如,计算1至n的和,命令式语言通常形如:  

s = 0; for (int i=1; i<=n; i++)     s = s + i; print(s);这种程序通过不断修改变量s的值最后得到计算结果。重点描述如何计算

        Haskell函数式语言属于声明式语言,这种语言的程序通过计算逻辑表达计算,不需要描述计算次序,特点是无副作用。对于同样的问题,在Haskell语言中可以定义数学函数sum:

sum 0 = 0 sum n = n + sum (n-1)

在这里,计算1至n的和的Haskell函数程序是表达式sum n,sum是一个纯数学函数,n是数学意义上的变量,没有副作用。函数式程序重点描述计算什么

        函数式程序设计语言是建立在计算模型λ演算上的通用高级程序设计语言。由于它具有更高的抽象层次,更接近于人类的习惯数学思维,因此,更便于初学者理解掌握。

        函数式程序具有下列特点:

  • 简洁优美,容易理解。

        了解命令式程序设计的程序员明白,用命令式语言实现快速排序并不简单。然而,下面几行简短的Haskell代码用列表概括表达了快速排序的计算逻辑:


qsort []   = [] qsort (x:xs) = qsort [y|y <- xs, y < x] ++ [x] ++ qsort [y|y <- xs, y >= x]

这里[ ]表示空列表(或序列),(x:xs)表示非空列表,x是第一个元素,xs是尾列表,[y|y <- xs, y < x]表示xs 中小于x元素构成的列表,[y|y <- xs, y >= x]表示xs中大于等于x元素构成的列表,++表示将两个列表串接成一个列表的运算。

  • 无副作用,更少的程序错误。

        命令式程序中的函数多为有副作用的“过程”。一个纯函数的计算结果只与函数的输入有关,与计算次序无关,由此避免了命令式程序中由副作用引起的一类错误。

  • 高阶函数支持更高抽象性,支持模块化。

        在Haskell语言中,函数是“一等公民”,函数可以是其他函数的输入和输出,由此为代码重用性和模块化提供了方便。

  • 惰性计算为无穷数据结构提供支持。

        Haskell是一种惰性语言,这表明它只有在需要计算的时候才进行计算,或者只做必要的计算。这种惰性计算允许表达无穷数据结构,由此也为模块化提供了一种途径。

  • 易于推理,便于保证程序正确性。

        Haskell函数没有副作用,因此,可以像对待数学表达式那样对程序进行推理,便于确保程序的正确性。

        本课程是函数式程序设计的入门课程,也是一般程序设计的入门课程。本课程通过函数程序设计语言Haskell介绍函数程序的基本思想和方法,以及现代程序设计的基本思想,如函数抽象、多态、重载和高阶函数等。

        课程共11讲。前3讲构成程序设计的最基本内容,学完前三讲后学生便可以编写简单的函数程序。第4-6讲构成程序设计的进阶内容,学完第6讲以后学生可以编写较复杂的程序,并学会使用测试工具测试程序的性质。第7讲学习多态和重载的概念,如何编写多态和重载函数程序。第8讲学习函数式程序的重要特性高阶函数。第9讲学习如何自定义代数类型准确刻画数据。第10讲学习用Haskell如何编写有副作用的程序,包括交互式小游戏和模拟计算。第11讲学习Haskell的惰性计算策略,如何基于惰性计算使用无穷数据结构处理数据。

        对于初学程序设计的学生,本课程将为学生提供一个更简单的计算模型,专注于数学或者抽象层面的程序设计思想和方法,完成课程后将能使用Haskell函数语言解决一些实际问题。

        对于已经掌握一门程序设计语言的学生,修读该课程后将可以用函数式程序设计的思想理念设计更清晰、易读和易维护的程序,成为更好的程序员。

       事实上,程序设计语言存在几百种(据统计有超过700种),一名优秀的程序员不是掌握了很多种语言,而是应该掌握几百种语言背后的少数几种编程范式(programming paradigm),或者程序设计概念模型,包括命令式程序设计、函数式程序设计、面向对象的程序设计、逻辑程序设计和数据流程序设计等。

第1讲 函数程序设计简介
第2讲 函数、数据和类型
第3讲 基本数据类型
第4讲 递归函数
第5讲 软件测试
第6讲 列表程序设计
第7讲 多态与重载
第8讲 高阶函数
第9讲 自定义代数类型
第10讲 交互程序
第11讲 惰性计算