为什么在Haskell中不使用步长的情况下无法使用downto范围?
但是仅仅只能这样工作。
[7..1] => []
但是仅仅只能这样工作。
[7,6..1] => [7,6,5,4,3,2,1]
[x..y]
,其中y < x
并且你期望范围为空的情况下,Haskell可能会存在问题。 如果在这些情况下Haskell简单地向下走,则会产生微妙的错误。3.10. 等差数列
[...] 等差数列满足以下等式:
- [...]
- [ e1..e3 ] = enumFromTo e1 e3
- [...]
6.3.4 枚举类
对于 Int 和 Integer 类型,枚举函数有以下含义:
- [...]
- 序列 enumFromTo e1 e3 是列表 [e1,e1 + 1,e1 + 2,…e3]。如果 e1 > e3,则该列表为空。
- [...]
如果没有指定步长,Haskell会假定为+1,如果不适用于给定的参数,则返回空列表。
除了+1之外的任何增量都必须明确建议;不仅是正整数> 1。