scheme的应用序
来源:互联网 发布:中国机床 知乎 编辑:程序博客网 时间:2024/05/21 21:41
从练习1.5说起:
(define (p) (p))(define (test x y) (if (= x 0) 0 y))
而后求值 (test 0 (p))
由于scheme程序是应用序解释的,所以当(p)作为实参传入时,会先解析出来(p)到底是什么,再带入到test函数中去,那么(p)就会不断被(p)解释出来,导致死循环;
用个更显然的例子看:
(define (p) (display "1") (p))(define (test x y) (if (= x 0) (display "2") y))
调用(test 0 (p)) 会输出“11111111...”无数个“1”,而不会输出“2”,也就是说,优先解释(p),再进入test;
练习1.6是这个的拓展:
如果把if定义为一个常规过程,如下所示:
(define (new-if predicate then-clause else-clause) (cond (predicate then-clause) (else else-clause)))
那么调用sqrt-iter时, 由于里面有(new-if (good-enough?) guess (sqrt-iter)),就会先把所有的参数先计算出来,也就是good-enough?会计算一遍,guess计算一遍,(sqrt-iter)也要计算一遍;问题在(sqrt-iter)这个自我调用是致命的,自我调用后又会去解释一遍被调用的sqrt-iter中的(new-if (good-enough?) guess (sqrt-iter)),所以就无限循环了。
0 0
- scheme的应用序
- swift url scheme(应用之间的调用)
- iOS 常用应用的url scheme
- iOS 常用应用的url scheme 及查看方法
- iOS不同应用切换中URL Scheme的使用介绍
- iOS9 - 自定义URL Scheme完成应用间的跳转
- android scheme 跳转应用 如何获取intent传的参数
- 利用URL Scheme打开指定应用的通知
- Android Activity URL Scheme的介绍与应用
- scheme序对与表的进阶
- data URI scheme及其应用
- Scheme的学习感悟
- Scheme的数据类型
- 一些Scheme的资源
- 神奇的Scheme命名
- 关于scheme的quote
- CEGUI的Scheme笔记
- Scheme里面的IO
- 希望能被相关人看到,在百度知道 的提问被强奸了!
- my resume
- 利用dom4j读取完整的xml文档
- “钱三篇”后续之利息-钱的时间价值!
- Java Web读取properties配置文件
- scheme的应用序
- Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
- windows下常见cmd命令
- leetcode14
- 【半转半写】div水平垂直居中的完美解决方案
- 让Winform控件同时支持单击和双击事件
- C中.h头文件的写法
- oracle 12c 安装
- Android M 新的运行时权限开发者需要知道的一切