《程序设计》课程教学资源(PPT课件讲稿)第五章 函数式程序设计语言

第五章函数式程序设计语言 过程式程序设计语言由于数据的名值分离,变 量的时空特性导致程序难于查错、难于修改 命令式语言天生带来的三个问题只解决了一半 滥用goto已经完全解决 悬挂指针没有完全解决 函数副作用不可能消除
第五章 函数式程序设计语言 • 过程式程序设计语言由于数据的名值分离, 变 量的时空特性导致程序难于查错、难于修改 • 命令式语言天生带来的三个问题只解决了一半 • 滥用goto已经完全解决 • 悬挂指针没有完全解决 • 函数副作用不可能消除

°问题是程序状态的易变性( Mutability) 和顺序性( Sequencing Backus在图灵奖的一篇演说《程序设计 能从冯·诺依曼风格下解放出来吗?》中 极力鼓吹发展与数学连系更密切的函数 式程序设计语言
• 问题是程序状态的易变性(Mutability) 和顺序性(Sequencing) • Backus在图灵奖的一篇演说《程序设计 能从冯·诺依曼风格下解放出来吗?》中 极力鼓吹发展与数学连系更密切的函数 式程序设计语言

5.1过程式语言存在的问题 (1)易变性难于数学模型 ·代数中的变量是未知的确定值,而程序 设计语言的变量是对存储的抽象 根本解决:能不能不要程序意义的“变 量”只保留数学意义的“变量”? 能不能消除函数的副作用?
5.1 过程式语言存在的问题 (1)易变性难于数学模型 • 代数中的变量是未知的确定值,而程序 设计语言的变量是对存储的抽象 • 根本解决: 能不能不要程序意义的“变 量”只保留数学意义的“变量”? • 能不能消除函数的副作用?

例:有副作用的函数 int sf fun(int x) static int z=0;//第一次装入赋初值 return x+(z++ sf fun(③3)={3|4|5|6|7. //随调用次数而异,不是数学意义的确定函数
例:有副作用的函数 int sf_fun(int x) static int z = 0; //第一次装入赋初值 return x + (z++); sf_fun(3) = {3 |4 | 5 | 6 | 7 …} //随调用次数而异,不是数学意义的确定函数

(2)顺序性更难数学模型 ·顺序性影响计算结果,例如,前述急求值、正规求 值、懒求值同一表达式就会有不同的结果。有副作用 更甚,因而难于为程序建立统一的符号数学理论 应寻求与求值顺序无关的表达方式 理想的改变途径 ·没有变量,就没有破坏性赋值,也不会有引起副作 用的全局量和局部量之分。调用通过引用就没有意义 循环也没有意义,因为只有每次执行循环改变了控制 变量的值,循环才能得到不同的结果 那么程序结构只剩下表达式、条件表达式、递归表达 式
(2)顺序性更难数学模型 • 顺序性影响计算结果, 例如, 前述急求值、正规求 值、懒求值同一表达式就会有不同的结果。有副作用 更甚, 因而难于为程序建立统一的符号数学理论。 • 应寻求与求值顺序无关的表达方式 • 理想的改变途径 • 没有变量, 就没有破坏性赋值, 也不会有引起副作 用的全局量和局部量之分。 调用通过引用就没有意义。 循环也没有意义, 因为只有每次执行循环改变了控制 变量的值, 循环才能得到不同的结果。 • 那么程序结构只剩下表达式、条件表达式、递归表达 式

52λ演算 λ演算是符号的逻辑演算系统,它正好只有这 三种机制,它就成为函数式程序设计语言的模 型 λ演算是一个符号、逻辑系统,其公式就是符。 号串并按逻辑规则操纵 Church的理论证明,λ演算是个完备的系统 可以表示任何计算函数,所以任何可用λ演算 仿真实现的语言也是完备的
5.2 λ演算 • λ演算是符号的逻辑演算系统,它正好只有这 三种机制, 它就成为函数式程序设计语言的模 型 • λ演算是一个符号、逻辑系统,其公式就是符 号串并按逻辑规则操纵 • Church的理论证明, λ演算是个完备的系统, 可以表示任何计算函数, 所以任何可用λ演算 仿真实现的语言也是完备的

λ演算使函数概念形式化,是涉及变量、函 数、函数组合规则的演算。 入演算基于最简单的定义函数的思想:一为 函数抽象λX.E,一为函数应用(λxE)(a)。 高阶函数。如入xC(为常量)是常函Q合 切变量、标识符、表达式都是函数或(
• λ演算使函数概念形式化,是涉及变量、函 数、函数组合规则的演算。 • λ演算基于最简单的定义函数的思想: 一为 函数抽象λx.E, 一为函数应用(λx.E)(a)。 • 一切变量、标识符、表达式都是函数或(复合) 高阶函数。如λx.C(C为常量)是常函数

5.2.1术语和表示法 (1)λ演算有两类符号: 小写单字符用以命名参数,也叫变量。 外加四个符号:(、)、。、λ。 大写单字符、特殊字符(如+ 大小写组成的标识符代替一个入表达式
5.2.1 术语和表示法 (1)λ演算有两类符号: • 小写单字符用以命名参数, 也叫变量。 • 外加四个符号: ( 、) 、。、λ。 • 大写单字符、 特殊字符(如+、-、*、/)、 大小写组成的标识符代替一个λ表达式

(2)公式 变量是公式,如y 如y是变量F是公式,则λy.F也是公式 如F和G都是公式,则(FG)也是公式
(2)公式 • 变量是公式,如y。 • 如y是变量F是公式, 则λy.F也是公式。 • 如F和G都是公式, 则(FG)也是公式

(3)A表达式 形如λy.F为λ函数表达式,以关键字 λ开始,变量y为参数 形如(FG)为λ应用表达式 为了清晰,λ表达式可以任加成对括号
(3)λ表达式 • 形如λy.F为λ函数表达式, 以关键字 λ开始, 变量y为参数。 • 形如(FG)为λ应用表达式 • 为了清晰,λ表达式可以任加成对括号
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《微型计算机接口技术》课程教学资源(PPT课件讲稿)第2章 16位和32位微处理器.ppt
- 淮阴工学院:《数据库原理》课程教学资源(PPT课件讲稿)第1章 数据库概论(主讲:冯万利).pps
- 操作系统原理(PPT讲稿)Windows OS Principles(Windows XP).pps
- 《单片机应用技术》课程PPT教学课件(C语言版)第8章 MCS-51单片机串行通信接口.ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第三章 数据链路层.ppt
- 《数字图像处理》课程教学资源(PPT课件)第6章 图像复原.ppt
- 微软分布式计算技术(PPT讲稿)Dryad and DryadLINQ.ppt
- P2P Tutorial(PPT讲稿).ppt
- 北京大学:网络信息体系结构(PPT讲稿)Web-based Information Architecture.ppt
- 信息和通信技术ICT(PPT讲稿)浅谈信息技术和低碳经济(中国科学技术大学:王煦法).ppt
- 山东大学:《微机原理及单片机接口技术》课程教学资源(PPT课件讲稿)第八章 数据通信.ppt
- 《人工智能技术导论》课程教学资源(PPT课件讲稿)第1章 人工智能概述.ppt
- 河南中医药大学(河南中医学院):《计算机文化》课程教学资源(PPT课件讲稿)第四章 计算机软件系统(主讲:许成刚、阮晓龙).ppt
- 清华大学:A Pivotal Prefix Based Filtering Algorithm for String Similarity Search(PPT讲稿).pptx
- 《数据结构》课程教学资源(PPT课件讲稿)第十章 内部排序.ppt
- 《C语言教程》课程教学资源(PPT课件讲稿)第三章 C语言程序设计初步.ppt
- 电子科技大学:《计算机操作系统》课程教学资源(PPT课件讲稿)第三章 存储管理 Memory Management.ppt
- 中国科学技术大学:《计算机体系结构》课程教学资源(PPT课件讲稿)RISC-V指令集及简单实现.pptx
- 《信息安全工程》课程教学资源(PPT课件讲稿)第3章 密码学基础.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)敏捷软件开发 Agile Software Development.ppt
- 链路状态路由协议(PPT讲稿)LINK STATE ROUTING PROTOCOLS.pptx
- 厦门大学:《大数据技术原理与应用》课程教学资源(PPT课件讲稿,2016)第5章 NoSQL数据库.ppt
- 北京师范大学:《多媒体技术与网页制作》课程教学资源(PPT课件)课程总复习(主讲:赵国庆).ppt
- 《数据结构》课程教学资源(PPT课件讲稿)第一章 绪论 Data Structure.ppt
- 微软应用软件架构设计指南2.0 Application Architecture Guide 2.0 Designing Application on the .NET Platform.ppt
- 软件建模与UML(PPT讲稿).ppt
- 长春大学:《大学计算机基础》课程电子教案(PPT教学课件)第4章 电子表格软件(Excel2003).ppt
- 东北大学:《可信计算基础》课程教学资源(PPT课件讲稿)第6讲 可信计算基础.pptx
- 上海立信会计金融学院:《机器学习与金融应用实践 Machine Study and Financial Practice》课程教学资源(教学大纲).pdf
- 香港科技大学:Overview of the Internet of Things(IoTs).ppsx
- 《微机原理与接口技术》课程教学资源(PPT课件讲稿)第2章 AT89S52单片机硬件结构.ppt
- 《计算机网络》教程资源(PPT课件讲稿)第13章 IPv6协议.ppt
- MSC Software Corporation:Modeling and Simulation of Fluid Power Systems Using MSC.EASY5.ppt
- 《计算机组成原理》课程教学资源(PPT课件讲稿)第11章 设备管理 Device Management.ppt
- 《软件工程导论》课程教学资源(PPT课件讲稿)第10章 面向对象的分析.ppt
- 《Web编程实用技术》课程教学课件(网站开发)第2章 静态网页开发技术.ppt
- 《局域网组建与管理》课程教学资源(PPT课件讲稿)第五章 组建家庭或学生宿舍局域网.ppt
- 电子科技大学:《现代密码学》课程教学资源(PPT课件讲稿)第5章 数字签名.ppt
- 南京航空航天大学:《数据结构》课程教学资源(PPT课件讲稿)第三章 栈和队列.ppt
- 《计算机文化基础 Computer Culture Foundation》课程教学资源(实验教学大纲).pdf