У меня есть список mins 415920 номеров, все должны быть закрыты до 0.1:
Prelude Lib> take 5 mins
[9.83610706554002e-2,9.847021825032128e-2,9.847021825032128e-2,9.898395035483082e-2,9.898395035483082e-2]
Тем не мение:
Prelude Lib> minimum mins
0.10087849151477328
minimum функция не должна возвращать минимум?
Этот результат звучит правдоподобно:
Prelude Lib> foldr min 100000 mins
1.1763616593045858e-4
Это ошибка, или я неправильно понимаю minimum?
Аналогичная проблема с maximum:
Prelude Lib> maximum mins
3261145.0627630088
Prelude Lib> foldr max 0 mins
0.1207868227600914
Сортировка списка дает третий результат для максимума:
Prelude Lib> import Data.List as L
Prelude Lib L> mins' = sort mins
Prelude Lib L> head mins'
1.1763616593045858e-4
Prelude Lib L> last mins'
0.10295664278431726
И применение minimum и maximum в отсортированном списке дает третий результат для минимума:
Prelude Lib L> minimum mins'
0.10045801977483232
Prelude Lib L> maximum mins'
3261145.0627630088
редактировать
После комментария @max630 я искал в списке текстовый редактор. 3261145.0627630088 действительно здесь, и есть некоторые NaN:
NaN,NaN,3261145.0627630088
Вывод: похоже, что minimum дает неправильный результат, а maximum дает правильный результат.
foldr max дает неверный результат, foldl max дает хороший результат:
> foldl max 0 mins
3261145.0627630088