ibt es eine Möglichkeit, unendliche und endliche Listen zu trenne

Ich schreibe zum Beispiel eine Funktion für Listen und möchte die Längenfunktion @ verwende

foo :: [a] -> Bool
foo xs = length xs == 100

Wie kann jemand verstehen, ob diese Funktion mit unendlichen Listen verwendet werden kann oder nicht?

Oder sollte ich immer an unendliche Listen denken und so etwas benutzen

foo :: [a] -> Bool
foo xs = length (take 101 xs) == 100

Anstatt Länge direkt zu verwenden?

Was wäre, wenn haskell einen FiniteList-Typ hätte, dann wären length und foo

length :: FiniteList a -> Int
foo :: FiniteList a -> Bool

Antworten auf die Frage(10)

Ihre Antwort auf die Frage