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

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

λ演算公式举例 变量、公式、表达式 (λx.((y)x)) 函数,体内嵌入应用。 (λz.(y(λz.x))函数,体内嵌入应用 再次嵌入函数。 ((λz.(zy)x)应用表达式。 λx.Ay.λz.(xλx.(uv)w)复杂表达式
λ演算公式举例 x 变量、公式、表达式。 (λx.((y)x)) 函数, 体内嵌入应用。 (λz.(y(λz.x))) 函数, 体内嵌入应用, 再次嵌入函数。 ((λz.(z y))x) 应用表达式。 λx.λy.λz.(x λx.(u v)w) 复杂表达式

由于λ演算中一切语义概念均用λ表达式表 达。为了清晰采用命名替换使之更易读。 λx.Ay.x //逻辑真值 TF12 入 Ⅹ.Ny.y //逻辑假值 λx.y.xy //数1 入x.y.x(xy //数2 zerop=n.n(λx.F)T/判零函数 注: zerop中的F、T可以用λ表达式展开
由于λ演算中一切语义概念均用λ表达式表 达。 为了清晰采用命名替换使之更易读。 T = λx.λy.x //逻辑真值 F = λx.λy.y //逻辑假值 1 = λx.λy.x y //数1 2 = λx.λy.x(x y) //数2 zerop = λn.n(λx.F)T //判零函数 注:zerop中的F、T可以用λ表达式展开

形式语法 核心的λ演算没有类型,没有顺序控制等概念 程序和数据没有区分。语法极简单 λ-表达式〉:∴:= λ.〈λ-表达式> () () 变量〉 <字母
形式语法 核心的λ演算没有类型, 没有顺序控制等概念 , 程序和数据没有区分。 语法极简单: :: = | λ. | () | () :: =
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 南京大学:移动Agent系统支撑(PPT讲稿)Agent Mobility Software Agent.pptx
- 计算机硬件维护(PPT课件讲稿).ppt
- 《MATLAB程序设计》课程教学资源(教学大纲)Matlab programming.doc
- 普林斯顿大学:平衡查找树(PPT讲稿)New Balanced Search Trees.pptx
- 清华大学:Top-k String Similarity Search with Edit-Distance Constraints.pptx
- 上海交通大学:网络安全 Network Security(PPT讲稿,朱浩瑾).pptx
- 《单片机原理及应用》课程教学资源_本科教学大纲汇编(电子信息工程专业).doc
- 广西外国语学院:《计算机网络》课程教学资源(PPT课件讲稿)第10章 应用层协议.ppt
- 《计算机网络》课程教学资源(PPT课件讲稿)第三章 局域网与校园网设计(网络方案设计).ppt
- 上海交通大学:人工智能的历史和启示——人机对弈作为案例.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第三章 词法分析.pptx
- 自动语音识别(PPT讲稿)Automatic Speaker Recognition.pptx
- 中国铁道出版社:《局域网技术与组网工程》课程教学资源(PPT课件讲稿)第2章 网络工程系统.ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第九章 无线网络.ppt
- 香港浸会大学:MPI - Communicators(PPT讲稿).ppt
- 《单片机应用系统设计技术》课程教学资源(PPT课件讲稿)第7章 单片机外部扩展资源及应用.ppt
- 北京航空航天大学:《数据挖掘——概念和技术(Data Mining - Concepts and Techniques)》课程教学资源(PPT课件讲稿)Chapter 01 Introduction.ppt
- 《单片机原理及应用》课程教学资源(PPT课件讲稿)第14章 单片机应用系统抗干扰与可靠性设计.ppt
- 河南中医药大学(河南中医学院):《计算机文化》课程教学资源(PPT课件讲稿)第七章 数据库技术(主讲:王哲).pptx
- 三维计算机视觉 3D computer vision(基于卡尔曼滤波的运动结构).pptx
- 《C++程序设计》教学资源(PPT课件讲稿)构造函数和析构函数.ppt
- 《计算机应用基础》工学结合配套课件(PPT讲稿)模块二系统软件操作技术(Windows XP的实用工具).ppt
- 河南中医药大学:《网络技术实训》课程教学资源(PPT课件讲稿)第7讲 网络安全实训(主讲:许成刚).pptx
- 《电子商务实用教程》课程教学资源(PPT课件讲稿)第三章 网络营销.ppt
- 广西医科大学:《计算机网络 Computer Networking》课程教学资源(PPT课件讲稿)Chapter 03 Network Management and Operation(Network Architetures and Standarts).pptx
- 中国科学技术大学:《信号与图像处理基础 Signal and Image Processing》课程教学资源(PPT课件讲稿)空域滤波 Spatial Filtering.pptx
- 安徽理工大学:《汇编语言》课程教学资源(PPT课件讲稿)第八章 输入输出程序设计.ppt
- 构建互联互通的单位局域网(PPT讲稿).ppt
- 中国科学技术大学:《计算机网络 Computer Networks(计算机通信网)》课程教学资源(PPT课件讲稿)Chapter 06 Internet Protocol.ppt
- 四川大学:《操作系统 Operating System》课程教学资源(PPT课件讲稿)Chapter 5 互斥与同步(Mutual Exclusion and Synchronization)5.1 Principles of Concurrency 5.2 Mutual Exclusion.ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第五章 运输层.ppt
- 电子科技大学:《计算机操作系统》课程教学资源(PPT课件)第一章 操作系统引论.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第三章 词法分析.ppt
- 同济大学:FWA for Noisy Optimization Problems(张军旗).pptx
- 西安培华学院:《计算机应用基础》课程教学资源(PPT课件讲稿)第1章 信息技术与计算机基础知识.ppt
- 香港科技大学:Recent Development of Heterogeneous Information Networks - From Meta-paths to Meta-graphs.pptx
- 《C语言程序设计》课程电子教案(PPT课件讲稿)第9章 文件操作.ppt
- 理论计算机科学(PPT专题讲稿)Topics in Theoretical Computer Science(Linear Programming).pptx
- 北京建筑大学:《计算机图形学》课程教学资源(PPT课件讲稿)第一章 绪论(吕书强).ppt
- 清华大学:《计算机导论》课程电子教案(PPT教学课件)第5章 程序设计知识.ppt