Почему map возвращает дополнительный элемент при использовании диапазонов в Haskell?
Я только начал изучать Хаскель и нашел странную вещь.
Пусть у нас есть список:
ghci> [0,2..5]
[0,2,4]
Имеет 3 элемента. Когда я используюmap
с этим списком я получаю 3 элемента в качестве вывода, например:
ghci> map (+ 1) [0,2..5]
[1,3,5]
ghci> map (* 2) [0,2..5]
[0,4,8]
ghci> map (`div` 2) [0,2..5]
[0,1,2]
Но когда я использую дробное деление, я получаю 4 элемента в списке вывода:
ghci> map (/ 2) [0,2..5]
[0.0,1.0,2.0,3.0]
ghci> length (map (/ 2) [0,2..5])
4
Не могли бы вы объяснить, почемуmap
может вернуть больше элементов, чем было?
Спасибо!