作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在阅读一本Haskell书,其中其中一项练习要求懒惰地计算谐波函数,我提供了这种解决方案,我认为这很懒:
harmonic n = sum l
where l = take n (map (1/) [1..])
harmonic n = sum (take n seriesValues)
where seriesPairs = zip (cycle [1.0]) [1.0,2.0 .. ]
seriesValues = map
(\pair -> (fst pair)/(snd pair))
seriesPairs
最佳答案
我的意思是您可以对它进行基准测试,但是我没有很高的期望。这本书的措词看起来很尴尬。做一些方程式重构让我大叫
seriesPairs = zip (cycle [1.0]) [1.0,2.0 .. ]
seriesPairs = zip (cycle [1]) [1,2..] -- trust type inference
seriesPairs = map (1,) [1,2..] -- unnecessary zip of repeat list
seriesValues = map (\pair -> (fst pair)/(snd pair)) seriesPairs
seriesValues = map (\(a,b) -> a/b) seriesPairs -- pattern matching!
seriesValues = map (\(a,b) -> a/b) (map (1,) [1,2..])
seriesValues = map ((\(a,b) -> a/b) . (1,)) [1,2..] -- map fusion
seriesValues = map (\b -> 1/b) [1,2..]
seriesValues = map (1/) [1..]
harmonic n = sum (take n seriesValues)
harmonic n = sum (take n (map (1/) [1..]))
(\pair -> (fst pair)/(snd pair))
行具有很浓的重音)。
Int
参数和一个
Double
结果,则我将称为“惰性”的唯一函数是常量函数。
harmonicNumbers :: [Double]
harmonicNumbers = scanl (+) 0 (map (1/) [1..])
关于haskell - 延迟计算谐波函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61473630/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我是一名优秀的程序员,十分优秀!