Почему [1..n] не обрабатывается так же, как [N..1] в Haskell?

Я пытался решить проблему, которая требовала максимальное значение списка после сопоставления функцией. Список находится диапазон от A до B, где A> B или B> A. Поскольку Haskell также может определить уменьшение списков, которые я думал, что мне не нужно проверять, если A> B и не было необходимости переворачивать границы к B..a. Функция выглядит несколько такова:

f a b = maximum . map aFunction $ [a..b]

, но если список уменьшается I.e. A> B, то Haskell дает мне исключение:

Prelude.maximum: empty list

Так что по какой-то причине уменьшается список рук в пустом списке к максимальной функции. Почему?

Я знаю, что максимум определяется в терминах Foldl1 Max и что Foldl1 нужен не пустой список, но я не Знайте, почему список, как [10..1] пустой при передаче в Foldl1 .

5
задан Julian 8 September 2011 в 13:54
поделиться