我不明白为什么这两个相似的列表推导会给出不同的结果:
Prelude> let t2s n= [ 1/(2*i) | i <- [1,3..n]]
Prelude> t2s 0
[0.5]
Prelude> let t2s n= [ (2*i) | i <- [1,3..n]]
Prelude> t2s 0
[]
我希望两者都在参数
[]
上返回 0
。我一定错过了一些愚蠢的东西?! 最佳答案
这与以下事实有关
enumFromThenTo 1.0 3.0 0.0
评估为
[1.0]
。浮点数的 enumFromThenTo
规范可以在 http://www.haskell.org/onlinereport/haskell2010/haskellch6.html 的第 6.3.4 节中找到。