主题 : Scheme 中的简单惰性编程
级别: 秀才
UID: 92457
积分:67 加为好友
威望: 2 精华: 0
主题:51 回复:4
注册时间:2016-09-13
在线时长:0
1#   发表于:2016-09-19 17:52:00  IP:183.153.*.*
大多数的应用程序都或多或少地使用了惰性编程的概念,它能解决一些什么问题呢?深圳java培训(sz.java.tedu.cn)专家就为你分析一下Scheme 中的简单惰性编程
深圳java培训
惰性编程能够将代码的求值延迟到需求结果值时再停止。例如,在 Scheme 中,惰性编程就是经过两个特殊的构造显式支持的。Scheme 的 delay 特殊表单接纳一个代码块,它不会立刻执行它们,而是将代码和参数作为一个 promise 存储起来。假如您 force 这个 promise 产生一个值,它就会运转这段代码。promise 随后会保管结果,这样未来再恳求这个值时,该值就能够立刻返回,而不用再次执行代码了。
下面是一个阐明 delay 和 force 如何一同工作的简单例子。
清单 1. 运用 delay 和 force 的例子
;;The multiplication is saved but not executed
(define my-promise (delay (* 5 6 7 8 9)))
;;Again, saved but not executed
(define another-promise (delay (sqrt 9)))
;;Forces the multiplication to execute. Saves and returns the value
(display (force my-promise))
(newline)
;;This time, the multiplication doesn't have to execute. It just returns
;;the value that was previously saved.
(display (force my-promise))
(newline)
;;This produces an error, because the promise must be forced to be used
(display (+ my-promise (force another-promise)))
这些构造的运用都十分简单,但是它们应该用来干什么呢?普通地,惰性编程常用于所调用的函数生成调用程序不需求的值的状况下。
例如,假定有一个函数会计算一组数字的均匀值、方差和规范差。下面是完成这些功用的一种办法:
清单 2. 简单的统计计算
(define (square x) (* x x))
(define (calculate-statistics the-series)
(let* (
(size (length the-series))
(sum (apply + the-series))
(mean (/ sum size))
;variance is the sum of (x[i] - mean)^2 for all list values
(variance
(let* (
(variance-list (map (lambda (x) (square (- x mean))) the-series)))
(/ (apply + variance-list) size)))
(standard-deviation (sqrt variance)))
(vector mean variance standard-deviation)))
;Run the program
(display (calculate-statistics '(2 6 4 3 7 4 3 6 7 8 43 4 3 2 36 75 3)))
(newline)
如今假定我们希望只在特定条件下才会计算规范差,但是这个函数却早已破费了很多计算才能来计算规范差。有几种办法能够处理这个问题。您能够将其分割成几个单独的函数分别计算均匀值、方差和规范差。
如果想学习的同学可以参加深圳达内JAVA培训,免费试听,或周末免费参加深圳JAVA培训公 开课程试听,这里有强大的师资阵容,“师者,所以传道授业解惑也”,讲师,是教育的主体,是影响整体办学质量、学员学习质量的重要因素。所以深圳达内 JAVA培训竭尽全力为学员提供最强大的师资力量,让学员接受最好的教育,学习最前沿的技术。掌握一门牛逼闪闪技术,待遇自然不在话下。
深圳达内培训,让你在IT行业里更有优势!
级别: 举人
UID: 80427
积分:135 加为好友
威望: 5 精华: 0
主题:16 回复:79
注册时间:2015-09-22
在线时长:0
2#   发表于:2016-09-20 09:29:31  IP:183.208.*.*
鄙视达内
理想强奸了现实,生下了孽种叫回忆
级别: 秀才
UID: 92457
积分:67 加为好友
威望: 2 精华: 0
主题:51 回复:4
注册时间:2016-09-13
在线时长:0
3#   发表于:2016-09-22 16:48:02  IP:183.144.*.*
好吧!你们好狠啊!!
深圳达内培训,让你在IT行业里更有优势!
级别: 秀才
UID: 92457
积分:67 加为好友
威望: 2 精华: 0
主题:51 回复:4
注册时间:2016-09-13
在线时长:0
4#   发表于:2016-09-22 16:56:28  IP:183.144.*.*
回复第2楼亲,你要是有空常来达内来看看,也许你会改变想法哦!
深圳达内培训,让你在IT行业里更有优势!
1 共1页