- 1、本文档共68页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第五章函数式程序设计语言ppt整理
第五章 函数式程序设计语言 过程式程序设计语言由于数据的名值分离, 变量的时空特性导致程序难于查错、难于修改 命令式语言天生带来的三个问题只解决了一半 滥用goto已经完全解决 悬挂指针没有完全解决 函数副作用不可能消除 问题是程序状态的易变性(Mutability)和顺序性(Sequencing) Backus在图灵奖的一篇演说《程序设计能从冯·诺依曼风格下解放出来吗?》中极力鼓吹发展与数学连系更密切的函数式程序设计语言 5.1 过程式语言存在的问题 (1)易变性难于数学模型 代数中的变量是未知的确定值,而程序设计语言的变量是对存储的抽象 根本解决: 能不能不要程序意义的“变量”只保留数学意义的“变量”? 能不能消除函数的副作用? (2)顺序性更难数学模型 顺序性影响计算结果, 例如, 前述急求值、正规求值、懒求值同一表达式就会有不同的结果。有副作用更甚, 因而难于为程序建立统一的符号数学理论。 应寻求与求值顺序无关的表达方式 理想的改变途径 没有变量, 就没有破坏性赋值, 也不会有引起副作用的全局量和局部量之分。 调用通过引用就没有意义。 循环也没有意义, 因为只有每次执行循环改变了控制变量的值, 循环才能得到不同的结果。 那么程序结构只剩下表达式、条件表达式、递归表达式。 5.2 λ演算 λ演算是符号的逻辑演算系统, 它正好只有这三种机制, 它就成为函数式程序设计语言的模型 λ演算是一个符号、逻辑系统,其公式就是符号串并按逻辑规则操纵 Church的理论证明, λ演算是个完备的系统, 可以表示任何计算函数, 所以任何可用λ演算仿真实现的语言也是完备的。 λ演算使函数概念形式化,是涉及变量、函数、函数组合规则的演算。 λ演算基于最简单的定义函数的思想: 一为函数抽象λx.E, 一为函数应用(λx.E)(a)。 一切变量、标识符、表达式都是函数或(复合)高阶函数。如λx.C(C为常量)是常函数。 5.2.1 术语和表示法 (1)λ演算有两类符号: 小写单字符用以命名参数, 也叫变量。 外加四个符号: ( 、) 、。、λ。 大写单字符、 特殊字符(如+、-、*、/)、大小写组成的标识符代替一个λ表达式。 (2)公式 变量是公式,如y。 如y是变量F是公式, 则λy.F也是公式。 如F和G都是公式, 则(FG)也是公式。 (3)λ表达式 形如λy.F为λ函数表达式, 以关键字λ开始, 变量y为参数。 形如(FG)为λ应用表达式 为了清晰,λ表达式可以任加成对括号。 λ演算公式举例 (4) 简略表示 形式语法 5.2.2 约束变量和自由变量 λ表达式中的作用域复盖 基本函数 TRUE 和FALSE的λ表达式 T = λx.λy.x F = λx.λy.y 整数的λ表达式: 0=λx.λy.y 1=λx.λy.x y 2=λx.λy.x(x y) n=λx.λy.x(x(…(x y)) n个 基本操作函数 not=λz.((zF)T)=λz.((zλx.λy.y)(λx.λy.x)) and=λa.λb.((ab)F) = λa.λb.((ab)λx.λy.y)) or = λa.λb.((aT)b) = λa.λb.((a λx.λy.x)b) 归约与范式 (1)β归约:β归约的表达式是一个λ应用表达式(λx.M N), 其左边子表达式是λ函数表达式,右边是任意λ表达式。β归约以右边的λ表达式置换函数体M中λ指明的那个形参变量。形式地,我们用[N/X,M]表示对(λx.M N)的置换(规则略)。 关键的问题是注意函数体中要置换的变量是否自由出现,如: ((λx.x(λx.(xy)))(zz)) =(zz)(λx.((zz)y)) //错误,第二x个非自由出现。 =(zz)(λx.(xy)) //正确 例11-5 高层表示的β归约 (2)η归约是消除一层约束的归约:λx.Fx = F (3)α换名:归约中如发生改变束定性质, 则允许换名(λ后跟的变量名), 以保证原有束定关系。 例如: (λx. (λy.x)) (z y) //(zy)中y是自由变量 = λy.(zy) //此时(zy)中y被束定了, 错误! = (λx.(λw.x))(zy) //因(λy.x)中函数体 无y, 可换名 = λw.(zy) // 正确! (4)归约约定 顺序:每次归约只要找到可归约的子公式即可归约, λ演算没有规定顺序。 范式:符号归约当施行(除α规则外)所有变换规则后没有新形式出现,则这种λ表达式叫范式。 解释:范式即λ演算的语义解释, 形如 x
您可能关注的文档
- 建筑风格细节特点的分析整理ppt.ppt
- 第九章 非关税措施.PPT
- 第九章 非货币性资产交换.ppt
- 第九章 非金属材料r.ppt
- 第九章 高聚物的其它性能.ppt
- 第九章习题课选讲例题.ppt
- 第九章 马其顿的兴起和马其顿——.ppt
- 第九章公司债 第十章公司财务.ppt
- 第九章会计账簿.ppt
- 第九章内容提要.ppt
- 环保岗位环保责任制度范文(4篇) .pdf
- 生态工业园区建设特色及对策研究-以山东潍坊经济开发区为例 .pdf
- 河南省信阳市第一高级中学2025届高三历史上学期期中试题扫描版.pdf
- 湖北工业大学工程技术学院全日制本专科教育合同审核审批表【模板】.pdf
- 生物实验室安全管理制度7篇 .pdf
- 生产统计的岗位职责 .pdf
- 浅析古筝曲《抒情幻想曲》 .pdf
- 河北省保定市竞秀区乐凯中学2023-2024学年八年级上学期月考数学试题.pdf
- 湘教版2021-2022学年七年级下学期地理期中考试试卷A卷精编 .pdf
- 甘肃省金昌市永昌县2023-2024学年高一上学期期中考试语文试题(含答案.pdf
最近下载
- 项目的实施流程.pdf VIP
- 2024年6月8日浙江杭州市直遴选笔试真题及答案解析.doc VIP
- 新人教版初中数学九年级上册《第二十三章旋转:23.1图形的旋转》公开课教案_4.pdf
- invt英威腾chf100a变频器使用说明书.doc
- 《生物化学课程标准.doc VIP
- 2023年黑龙江大学法学专业《民法学》期末试卷A(有答案).docx VIP
- GB_T 20001.3-2015 标准编写规则 第3部分:分类标准(OCR).pdf VIP
- 开放式和针阀式热流道比较.ppt
- 义务教育版(2024)三年级全一册第6课《视频记录片段》课件.pptx VIP
- 重庆市XX住宅工程分户验收表格填写样例.docx
文档评论(0)