Haskell,没有步骤的范围

502*_*502 6 haskell range

为什么在Haskell没有步骤的情况下没有工作范围

[7..1] => []
Run Code Online (Sandbox Code Playgroud)

但只是这样工作

[7,6..1] => [7,6,5,4,3,2,1] 
Run Code Online (Sandbox Code Playgroud)

VVS*_*VVS 13

Haskell无法知道你想要步骤-1,直到你给它一个提示.

在某些情况下,您可能希望范围[x..y]在何处y < x以及您希望范围为空的位置.如果Haskell在这些情况下简单地向下移动,这将产生微妙的错误.


Cat*_*lus 8

3.10.算术序列

[...]算术序列满足这些身份:

  • [...]
  • [e1..e3] = enumFromTo e1 e3
  • [...]

6.3.4枚举类

对于Int和Integer类型,枚举函数具有以下含义:

  • [...]
  • 序列enumFromTo e1 e3是列表[e1,e1 + 1,e1 + 2,... e3].如果e1> e3,则列表为空.
  • [...]

来自Haskell 2010语言报告.