【发布时间】:2015-11-16 17:11:37
【问题描述】:
我刚开始使用 Haskell,并敲定了这个简单的递归算法,以找到列表中每个数字的 LCM。它可以工作,但很混乱,我希望能获得一些同行评议,了解如何使它更优雅、更易读和更符合 Haskell 风格。
lcms list
| length list > 1 = lcms (lcm (head list) (head (tail list)):(tail (tail list)))
| otherwise = list
因此,它需要一个列表并对前两项进行 LCM,然后将其添加到列表中减去这两个元素。基本上,我要的伪代码是这样的:
lcms [a,b,c] = lcm (a, (lcm (b, c))
有什么建议吗?我渴望在 Haskell 上有所改进,写出人们可以真正阅读的东西。也欢迎效率提示!
谢谢大家!
【问题讨论】:
标签: haskell recursion fold readability lcm