第5章函数式程序设计语言.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
5.3.5 输出问题 利用数据对象内部原有的顺序 结构对象是第一类对象, 语言支持的任何形式(交互、非交互)的输出都可以用在表和元组上。Miranda就是用无限表动态实现的 无限表尾不表示任何值, 它是函数对象, 每当调用到它时, 它按规定计算表头值, 并构造 一新的函数对象放在表尾, 以便再展其它项, 它就是新的无限表尾的头, 这个过程一直延续到需要的表长已达到。 输入输出流就是一个值的无限表, 每次处理输入流一个新值就附在表尾并为程序访问。同样, 也用无限表模型输出流。 5.4 函数式语言Miranda 简单的Miranda手本 Miranda λ演算 sq n = n * n sq = λn. * n n z=sq x/sq y z=/(sq x)(sq y) Miranda的基本类型有字符(char类型, 加单引号的字母), 真值(bool类型, 值为True和False)和数(num 类型, 包括整数、实数), 数据结构只有表和元组, 串是字符表 11.4.1 数据结构 元组(tuple) 树类型定义 tree::= Leaf Integer | Node tree tree [1] leaf1 = (Leaf 3) [2] tree1 = (Node leaf1 (Node (Leaf 17) (Leaf 49))) [3] 3 3 17 49 leaf 1 tree 1 leaf 1 第[2]行执行后 第[3]行执行后 多态函数定义及调用 设函数 max_tree 为求树中叶子值最大 max_tree (Leaf ldata) = ldata [1] max_tree (Node n1 n2) = max1, max1 max2 [2] = max2, max2 max1 [3] = max1, otherwise where max1 = (max_tree n1) [4] max2 = (max_tree n2) [5] 如有应用: (max_tree leaf1) //结果值为3, leaf1用上例 (max_tree tree1) //结果值为49,tree1用上例 表(list) Miranda表的表示法 [ ] //空表 [1..n] //1到n,域表示 odd_number = [1,3,..100] //1到100内奇数表,头两项及最后项必写 eleven_up = [11...] //10以上, 无限表表示 evens = [10,12...100] //10以上偶数表至100,头两项及最后项必写 evens_up = [12,14...] //10以上偶数无限表, week _days = [“Mon”,“Tue”,“Wed”,“Thur”,“Fri”] //五个串值的表 5.4.2 内定义操作 Miranda定义了常规的算术运算符(+、-、*、/、div、mod)并按中缀表示使用。故内定义了一些有用的表操作: L1 ++ L2 // 表L2并接到表L1的末尾 item:List // 将项item加到表List的头前 List ! n // 从表List中选取第n项 L1 -- L2 // 从表L1中剔出L2的值 #List //返回表List的项(基)数 5.4.3 定义函数 Miranda把函数定义叫方程(equation)。 例: 斐波那契数的函数定义, 用卫式表达式实现递归 Fibonacci n = 1, n=0 = 1, n=1 = Fibonacci (n-1)+Fibonacci (n-2

文档评论(0)

xuefei111 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档