Por que esse código Haskell funciona com êxito com listas infinitas?

Tenho algum código Haskell quefa funciona corretamente em uma lista infinita, mas eu não entendoporqu pode fazê-lo com sucesso. (Modifiquei meu código original - que não lidava com listas infinitas - para incorporar algo de outro código online e, de repente, vejo que funciona, mas não sei por quê

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

Meu entendimento do foldr é que ele percorrerá todos os itens da lista (e talvez esse entendimento esteja incompleto). Nesse caso, não importa como a função "step" seja redigida ... o código não poderá manipular loops infinito

No entanto, o seguinte funciona:

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

Por favor me ajude a entender: por que

questionAnswers(4)

yourAnswerToTheQuestion