Der folgende Code gibt mir in einigen Fällen einen Stapelüberlauffehler (ex hosum (\x->x `mod` 3) 1000
) und ich verstehe nicht warum. Kann mir das jemand erklären? (Ich bin neu in Haskell und ich würde jede Hilfe dankbar :))Unendliche Schleife in Haskell-Programm
hosum :: (Int -> Int) -> (Int -> Int)
hosum f = (\x -> hs f x (- x))
where hs :: (Int -> Int) -> Int -> Int -> Int
hs f 0 0 = f 0
hs f n m
| m <= n
= f m + hs f n (m+1)
| n <= m
= f n + hs f (n+1) m
| otherwise
= 0
oh ok, ich verstehe. Vielen Dank :) –
Ich zweite Entfernen der 'hs f 0 0 'Fall. Es sieht witzig aus, dass "n, m" in jedem rekursiven Aufruf (um 1) als Basisfall ansteigt. – chi