我刚刚开始使用 Haskel 学习函数式编程。
我正在慢慢度过Erik Meijer 在 Channel 9 的讲座 http://channel9.msdn.com/shows/Going+Deep/Lecture-Series-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-1/(到目前为止我已经看过前 4 个),在第四个视频中,Erik 解释了 tail 的工作原理,它让我着迷。
我尝试编写一个返回列表中间的函数(偶数长度为 2 个项目,奇数为 1 个项目),我想听听其他人如何实现它
- 最少的 Haskell 代码
- 最快的 Haskell 代码
如果您能解释一下您的选择,我将非常感激。
我的初学者代码如下所示:
middle as | length as > 2 = middle (drop 2 (reverse as))
| otherwise = as
只是为了您的娱乐,一个不会说 Haskell 的人提供的解决方案:
编写一个带有两个参数 a1 和 a2 的递归函数,并将列表作为这两个参数传入。在每次递归时,从 a2 中删除 2,从 a1 中删除 1。如果a2 的元素用完了,那么您将位于a1 的中间。您可以处理 a2 中仅剩余 1 个元素的情况,以回答您的“中间”是否需要 1 个或 2 个元素。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)