Я наткнулся на упражнение в одной из моих лекций, которые оставили меня в замешательстве на выходе из [2, 2.. 2]. Почему при входе в [2, 2.. 2] он генерирует "бесконечный" список с 2-мя.
То, как я понял, обозначение было то, что первым элементом является начальная граница, вторая - "пробел" между числами, а последний - конец списка, другими словами, останавливается при достижении этого числа.
Если мои рассуждения верны, почему выражение [2, 2.. 2] не выводится [2]?.
Я думал, что Haskell может оценить это так:
- При печати первого элемента в списке он равен последний, поэтому остановка.
- Или, если первый элемент не проверен на "внешнюю" привязку, тогда выход будет [2, 2], потому что при добавлении нуля к предыдущему номеру (в случае с началом 2) мы имели бы дошел до конца и, следовательно, остановился.
Я, очевидно, не правильно понимаю работу обозначений, так как Haskell оценивает выражение?