Jeśli mam tej funkcji insert:Haskell: foldr vs foldr1
insert x [] = [x]
insert x (h:t)
| x <= h = x:(h:t)
| otherwise = h:(insert x t)
To daje posortowaną listę:
foldr insert [] [1,19,-2,7,43]
ale tym:
foldr1 insert [1,19,-2,7,43]
produkuje 'nie można skonstruować nieskończony typ: a0 = [a0] '
Jestem zdezorientowany tym, dlaczego drugie połączenie nie działa.
Przyjrzałem się definicjom zarówno dla i foldr1 i śledziłem oba z prostymi funkcjami arytmetycznymi, ale wciąż nie mogę wymyślić jasnego wyjaśnienia, dlaczego drugie połączenie nie działa.