小编Jul*_*ian的帖子

为什么[1..n]的处理方式与Haskell中的[n..1]不同?

我试图解决一个问题,该问题在被函数映射后需要列表的最大值.该列表是从a到b的范围,其中a> b或b> a.因为Haskell也可以定义递减列表,我认为我不需要检查是否a> b并且不需要将边界翻转为b..a.该函数看起来有点像这样:

f a b = maximum . map aFunction $ [a..b]
Run Code Online (Sandbox Code Playgroud)

但是如果列表正在减少,即a> b,那么Haskell给了我一个例外:

Prelude.maximum: empty list
Run Code Online (Sandbox Code Playgroud)

因此,由于某种原因,递减列表将空列表移交给最大函数.这是为什么?

我知道这maximum是用a来定义的,foldl1 max并且foldl1需要一个非空的列表,但我不知道为什么列表[10..1]在交给a时是空的foldl1.

haskell list fold

5
推荐指数
2
解决办法
2010
查看次数

标签 统计

fold ×1

haskell ×1

list ×1