Почему этот код на Haskell успешно работает с бесконечными списками?

У меня есть код на Haskell, которыйделает корректно работать над бесконечным списком, но я не понимаюПочему это может сделать это успешно. (Я изменил свой исходный код - который не обрабатывал бесконечные списки - чтобы включить что-то из какого-то другого кода онлайн, и вдруг я вижу, что он работает, но не знаю почему).

myAny :: (a -> Bool) -> [a] -> Bool
myAny p list = foldr step False list
   where
      step item acc = p item || acc

Я понимаю, что foldr будет проходить по всем пунктам в списке (и, возможно, это понимание неполное). Если так, то не должно иметь значения, как сформулирована функция «step» ... код не должен обрабатывать бесконечные циклы.

Тем не менее, следующие работы:

*Main Data.List> myAny even [1..]
True

Пожалуйста, помогите мне понять: почему ??

Ответы на вопрос(4)

Ваш ответ на вопрос