艾灸膝盖惰性计算.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文档。上传文档
查看更多
惰性计算

惰性计算 什么是惰性计算 惰性计算在模块设计中的作用 阅读第十七章 惰性计算Lazy Evaluation 例 例 计算规则 计算 – 模式匹配 计算 – 守卫 计算 – 局部定义 计算次序 函数是非严格的 无穷数据结构 生成素数( prime numbers ) 粘合程序 Newton-Raphson 求平方根公式 平方根 粘合 小结 Haskell是一个非严格、惰性语言 函数是非严格的,因此允许惰性计算 惰性计算含义 函数的参数只有在需要计算时才被计算; 一个参数不必完全计算,只有需要的部分才被计算; 一个参数最多被计算一次 惰性计算的意义:允许无穷数据结构,利用惰性计算将程序粘合,提供模块化机制。 * Haskell的主要计算是函数应用: 将函数f 应用于参数 a1, …, ak时, 将它们代入f定义等式右边相应的变量. Haskell 使用惰性计算: 函数的参数只有在需要计算时才被计算; 一个参数不必完全计算,只有需要的部分才被计算; 一个参数最多被计算一次。 定义函数 g x y = x + 12 则 g (9-3) (g (34 3)) (9-3) +12 6+12 18 另一个例子: switch :: Int - a - a - a switch n x y | n 0 = x | otherwise = y (g 34 3) 不需要计算 当 n0时,不需要计算 y 当 n = 0时,x不需要计算 定义函数 h x = x + x 则 h (9-3) (9-3)+(9-3) 6+6 12 其中 (9-3) 只需要计算一次。 函数的一般定义 f p1 p2 … pk |g1 = e1 … | otherwise = er where v1 a11 … = r1 f q1 q2 … q k = … 计算 f a1 … ak 包含下列三方面: 需要计算输入参数至匹配定义中的某个模式,从而决定使用那个等式。例如, f :: [Int] - [Int] - Int f [] xs = 0 f (x:xs) [] = 0 f (x:xs) (y:ys) = x + y 计算 f [1..3] [1..3] 过程 f [1..3] [1..3] f (1:[2..]) [1..3] f (1:[2..3]) (1:[2..3]) 1+1 假设输入匹配第一个等式,下一步是依次计算条件p1 至 pk, 直至一个条件的值是 True, 然后使用相应的式子作为输出值 f :: Int - Int - Int - Int f m n p | m = n m = p = m | n = m n = p = n | otherwise = p f (2+3) (4-1) (3+9) ?? (2+3)=(4-1) (2+3) =(3+9) … False ?? 3= 5 3 = 12 False ?? Otherwise True 由 where 引入的局部定义只有在需要的时候被计算,而且最多计算一次。例如 f :: Int - Int - Int f m n | notNil xs = front xs | otherwise = n where xs = [m..n] front (x:y:zs) = x+y front [x] = x f 3 5 7 xs 只需计算一次 f 5 3 3 front 不需计算 当计算存在次序选择时 计算由外至内进行, 例如 f1 e1 (f2 e2 e3), 先计算f1的函数应用。 否则,计算由左至右 例如 f1 e1 e2 + f2 e2 e3, 先计算f1 e1 e2, 后计算 f2 e2 e3.

文档评论(0)

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

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

1亿VIP精品文档

相关文档