![]() |
1
11
如果你有选择,你应该用最抽象的术语表达你的计算意图。这使读者更容易理解您的意图,并且使编译器更容易优化您的代码。在您的示例中,当编译器轻而易举地知道您通过命名它来执行折叠操作时,它也轻而易举地知道它可能并行于叶操作。当编写极低级别的操作时,编译器很难弄清楚这一点。 |
![]() |
2
4
通常,与递归相比,Lisp更倾向于使用高阶函数进行数据结构遍历、筛选和其他相关操作。这也可以从许多提供的函数中看到,比如reduce、remove-if、map和其他函数。 tail递归是a)不受标准支持,b)可能使用不同的cl编译器以不同的方式调用,c)使用tail递归可能会对生成的周围代码的机器代码产生副作用。 通常,对于某些数据结构,上面的许多操作是通过循环或迭代实现的,并作为高阶函数提供。对于迭代代码,人们倾向于使用新的语言扩展(如循环和迭代),而不是使用递归进行迭代。
这里还有一个使用公共lisp函数reduce的版本:
|
![]() |
3
3
我将回答一个稍微有点主观的问题,并给出一个高度主观的答案,因为爱尔兰共和军已经给出了一个非常实用和合乎逻辑的问题。-) 我知道,在某些圈子里,明确地写东西是很有价值的(Python的人把它作为“禅”的一部分),但即使是在我写Python的时候,我也从来没有理解过它。我想一直以最高的水平写作。当我想明确地写出东西时,我使用汇编语言。使用电脑(和HLL)的目的是让它为我做这些事情!
为了你
我也不喜欢整条线被重复--
我认为,在这种情况下,至少Python的人不喜欢隐式功能是:
但是
现在,我完全相信
是
在某些情况下,我更容易阅读一个显式函数调用,但我认为您必须非常有创意才能想出它们。我现在想不出什么,因为
|
![]() |
lightning_missile · 词法范围和共享对象 7 年前 |
![]() |
Alexandru Popa · SBCL中奇怪的宏扩展错误 7 年前 |
![]() |
Jacky · 编辑列表中的每个偶数索引元素 7 年前 |
![]() |
HappyFace · lisp典型缩进约定背后的规则是什么? 7 年前 |
![]() |
Jorge · 在公共Lisp中初始化计数器变量 7 年前 |
![]() |
Rorschach · cl循环破坏性修改cons单元 7 年前 |