Есть ли способ разделить бесконечные и конечные списки?
Например, я пишу некоторую функцию для списков, и я хочу использовать функцию длины
foo :: [a] -> Bool
foo xs = length xs == 100
Как кто-то может понять, может ли эта функция использоваться с бесконечными списками или нет?
Или я должен всегда думать о бесконечных списках и использовать что-то вроде этого
foo :: [a] -> Bool
foo xs = length (take 101 xs) == 100
вместо использования длины напрямую?
Что если в haskell будет тип FiniteList, то длина и foo будут
length :: FiniteList a -> Int
foo :: FiniteList a -> Bool