是否可以更改内置的haskell范围函数或文字的步长?

问题描述:

默认是否可以更改内置的haskell范围函数或文字的步长?

[1..5] 

给出了这样的

[1,2,3,4,5] 

,也可以用范围函数来完成。是否有可能改变点之间的步长,以便我可以得到类似于下面的内容?

[1,1.5,2,2.5,3,3.5,4,4.5,5] 

[1,1.5..5] 

你必须要小心浮点运算。它不能代表准确1.1,因此,如果您尝试

Prelude> [0,0.1 .. 1] 
[0.0,0.1,0.2,0.30000000000000004,0.4,0.5,0.6,0.7,0.7999999999999999,0.8999999999999999,0.9999999999999999] 

最好的办法是更喜欢:

Prelude> map (/10) [0..10] 
[0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0] 

其实,[1..5]

enumFromTo 1 5 

[1,1.5..5]

语法糖
enumFromThenTo 1 1.5 5 

欲了解更多信息,请参阅http://en.wikibooks.org/wiki/Haskell/Syntactic_sugar