Haskell,没有步骤的范围

时间:2011-08-07 11:51:08

标签: haskell range

为什么在没有步骤

的情况下Haskell没有工作范围
[7..1] => []

但仅限于此

[7,6..1] => [7,6,5,4,3,2,1] 

3 个答案:

答案 0 :(得分:13)

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

在某些情况下,您可能希望范围[x..y]位于y < x,并且您希望范围为空。如果Haskell在这些情况下只是向下一步,这会产生微妙的错误。

答案 1 :(得分: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 Language Report

答案 2 :(得分:2)

如果没有步骤的指示,haskell会认为它是+1并且如果它不适用于给定的参数则返回一个空列表。

必须明确建议除+1之外的任何增量; <积极的整合者> 1。