简单的是/否haskell列表问题

pau*_*aul 4 haskell list

所以我正在阅读http://learnyouahaskell.com/starting-out,因为它解释了列表,并在Vista 64上使用了ghci.它说[2,4..20]从4到20步长为2.这是有效的.它说[20,19..1]从20变为1,但没有解释.我认为第一个数字不是步骤,步骤是第一个和第二个数字之间的差异.这由[4,4..20]确认挂起(没有错误消息,必须杀死控制台).这与运营商不同!! 并take检查索引的范围并给出错误消息.

我的问题是:这是Vista端口上的一个错误还是它应该是这样的?

sep*_*p2k 9

[x,y..z]确实一步一步从x到z y-x.当y-x为0时,这将导致无限列表.这是预期的行为.

请注意,如果您在表达式中使用列表take 20 [2,2..20],ghci将不会尝试打印整个列表(当然,这对于无限列表来说是不可能的)并且它不会"挂起".


3le*_*gos 5

引用这本书:

[n,p..m]是以pn为步长从n到m的数字列表.

你的列表[4,4..20]"挂起",因为你有一个4-4 = 0的步,所以这是一个只包含数字4的无限列表([4,4,4,4 ...]) .