Я пытался решить проблему, которая требовала максимального значения списка после сопоставления с помощью функции. Список представляет собой диапазон от a до b, где a> b или b> a. Поскольку Haskell также может определять убывающие списки, я подумал, что мне не нужно проверять, если a> b, и нет необходимости переставлять границы на b..a. Функция выглядит примерно так:
f a b = maximum . map aFunction $ [a..b]
Но если список уменьшается, т.е. a> b, тогда Haskell дает мне исключение:
Prelude.maximum: empty list
Так что по какой-то причине уменьшающийся список передает пустой список функции максимального значения. Почему это так?
Я знаю, что maximum
определяется в терминах foldl1 max
и что foldl1
нужен непустой список, но я не знаю, почему такой список, как [10..1]
, пуст при передаче foldl1
.