Некоторые из нас на работе читают некоторые из Haskell, и мы говорили о некоторых концепциях вчера. Возникает вопрос, что Haskell - ленивый язык, как он обрабатывает извлечение n-го элемента списка?
Например, если бы мы имели
[2,4..10000000] !! 200
Будет ли он заполнять список до 200 элементов? Или он скомпилирует его в уравнение, подобное
n*step + firstValue
а затем вернуть этот расчет? Причина этого в том, что кто-то пытался придумать пример, где программа будет легко исчерпаться из памяти, и мысль об обходе вниз (достаточно большой) список была первым кандидатом, который пришел.