作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我记得当我展示我写给教授的一些代码时,他说,
It rarely matters, but it's worth noting that
fold*
is a little bit more efficient thanfold*'
in SML/NJ, so you should prefer it overfold*
when possible.
我忘记了 fold*
是 foldr
还是 foldl
。我知道这是在实践中可能不会产生太大影响的微优化之一,但我想养成在有选择时使用更高效的习惯。
哪个是哪个?我的猜测是,这是特定于 SML/NJ 的,MLton 将足够聪明,可以将两者优化到相同的机器代码,但其他编译器的答案很高兴知道。
最佳答案
foldl
是尾递归的,而 foldr
不是。虽然您可以通过反转列表(这是尾递归)以尾递归方式执行 foldr
,然后执行 foldl
。
只有在折叠大量列表时才有意义。
关于sml - foldl 与 foldr : which should I prefer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25624777/
我是一名优秀的程序员,十分优秀!