免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4494 | 回复: 5
打印 上一主题 下一主题

钻个牛角尖,请帮忙谢谢 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-08-27 11:32 |只看该作者 |倒序浏览
(- 56 45)-->11
(- 56 '45)--11
这两个表达式的值都是11,但第二个表达式使用了qoute,我想不通为什么也能得出正确答案

按照Practical common lisp的说法,reader 读进text "10",然后生成一个self-evaluating object,所以我觉得第二个表达式中的45经过qoute操作,他的类型应该有问题,我也说不明白是什么问题,总是感觉不太对,清大下帮忙,谢谢

论坛徽章:
0
2 [报告]
发表于 2009-08-27 14:36 |只看该作者
(- 56 45) 把函数  - 作用在参数 56, 45 上。此时 56, 45 都是内部的数值表示。

(- 56 '45) 是 (- 56 (quote 45)),得到 数值56 - 表达式45,但 45 这个表达式是自求值的,它也就是数值 45。

除了数字外,字符串和布尔值也是自求值的。

论坛徽章:
0
3 [报告]
发表于 2009-08-27 15:19 |只看该作者
原帖由 win_hate 于 2009-8-27 14:36 发表
(- 56 45) 把函数  - 作用在参数 56, 45 上。此时 56, 45 都是内部的数值表示。

(- 56 '45) 是 (- 56 (quote 45)),得到 数值56 - 表达式45,但 45 这个表达式是自求值的,它也就是数值 45。

除了数字外, ...

CL-USER> 10
10
    The first 10 is the one you typed. The Lisp reader, the R in REPL, reads the text “10” and
creates a Lisp object representing the number 10. This object is a self-evaluating object, which
means that when given to the evaluator, the E in REPL, it evaluates to itself.
这是书上的原话
1,内部数值表示,是什么意思,从上面可以看出,lisp为这个“10”创建了一个对象

2,我感觉quote的意思是阻止他后面的表达式被求值,从上面这段话可以看出,对于56,给他创建了一个对象,但对于45,由于他有quote的保护,没有任何动作,我是这样理解的,所以才想不通

论坛徽章:
0
4 [报告]
发表于 2009-08-28 15:32 |只看该作者
你觉的lisp里的表达式是如何求值的? 我觉的这是你想不通的原因. 书上肯定讲, 你仔细看看, 想一想.

所谓eval和apply的太极推手图. 但这个例子用不到apply.

[ 本帖最后由 chenzengjie 于 2009-8-28 15:33 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2009-09-08 22:59 |只看该作者
好久没来了

这个问题我找了一些资料,不知道我的理解对不对,请大虾执教

对于(- 56 '45)
对于‘45创建一个对象,由于quote的特殊作用,对这个对象求职时返回的就是对象本身,也就是说并没有对45这个对象求职,而对56时求了值的,但是由于数据“evalued to itself ”,所以对数字来说,秋与不求都一样,同样可以应用于数学计算
所以可以得到正确答案

论坛徽章:
0
6 [报告]
发表于 2009-11-11 16:48 |只看该作者
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP