- 论坛徽章:
- 0
|
其实 17 号晚上 lz 在得到答案后把顶楼的帖子编辑掉我就已经很无语了。
他的原题在我的 blog 上,无法编辑掉。转到这里:
==================================================================
网友: 本站网友 时间:2008-10-31 16:16:55 IP地址:168.28.136.★
你好,我是scheme的初学者,如何能用scheme实现prefix calculator,
(prefix-eval list)
>(prefix-eval ' (+ 3 6))
9
请指点迷津
谢谢
=================================================================
网友: win_hate 时间:2008-11-01 00:14:31 IP地址:116.219.155.★
SICP 的第四章讨论了如何 eval 表达式。大意就是 car 出函数(符号),判断是那一个函数,然后把函数 apply 到表达式子的 cdr 上。比如
(define exp '(+ 6 3)) 则 (car exp) 为符号 +,可以用 cond + eq? 判断出 car 出来的是 +,然后把函数 + apply 到 (cdr exp) 上。
> (define exp '(+ 6 3))
> (if (eq? '+ (car exp)) (apply + (cdr exp)))
9
=================================================================
网友: win_hate 时间:2008-11-01 00:17:19 IP地址:116.219.155.★
此外,Scheme 提供了一个 eval 函数,可以对表达式求值。但处表达式外,还要提供求值环境。如:
> (eval '(+ 6 3) (interaction-environment))
9
>
==================================================================
网友: 本站网友 时间:2008-11-01 04:14:47 IP地址:168.28.136.★
Thanks man! 我看过了,但是仍然不是很明了,而且Drscheme提示我 quote有错误。 我想用scheme实现波兰表示法、逆波兰表示法的计算器,我应该怎么做呢?
Waiting for U。。。
===================================================================
网友: win_hate 时间:2008-11-09 12:00:20 IP地址:118.147.17.★
表达式分析跟 scheme 没有必然联系。那套理论在普通的数据结构书上就有,搞懂了,用什么语言都可以实现。
[ 本帖最后由 win_hate 于 2008-12-13 11:49 编辑 ] |
|