遵循哪种编程实践来评估方案中的表达式
我正在解决来自 htdp.org 的问题。我想知道在方案中,哪种方法是评估具有“+”或“*”等常见运算符的长表达式的更好做法。
示例:
> (* 1 10 10 2 4) ; Version A
> (* 1 (* 10 (* 10 (* 2 4)))) ; Version B
我应该遵循 A 还是 B。另外,我请考虑上面的代数表达式示例,例如圆柱体的表面积。
-阿比
I am solving problems from htdp.org. I would like to know in scheme which is a better practice to evaluate long expressions having a common operator like '+' or '*'.
Example :
> (* 1 10 10 2 4) ; Version A
> (* 1 (* 10 (* 10 (* 2 4)))) ; Version B
Should I follow A or B. Also I please consider the above example for algebraic expressions like surface area of cylinder.
-Abhi
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
真正的问题应该是,它们会产生不同的结果吗?让我们在 REPL 中尝试一下:
因为它们本质上是相同的(使用您的示例),所以我选择在代码中使用较低的仪式/噪音。使用第一个。
The real question should be, do they produce different results? Let's try in our REPL:
Since they're essentially the same (using your example), I'd opt for going with lower ceremony / noise in the code. Use the first one.
对此有一点后续。当您谈论计时时,
(* abc ...)
不一定等同于(* (* ab) ...)
。某些实现可能会识别常见操作,但请尝试对阶乘的这两个定义进行计时:
对我来说,第二个过程比第一个过程快得多。
A bit of a followup on this.
(* a b c ...)
is not necessarily equivalent to(* (* a b) ...)
when you're talking about timing.Some implementations may recognize the common operation, but try timing these two definitions of factorial:
The second procedure is considerably faster than the first for me.