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