Używam języka, aby rozpocząć naukę i jestem zdziwiony ponad moje rozumienie tego, jak działa definicja rekursywna.Jak działa (co) definicja rekursywna w Haskell?
Na przykład, weźmy kolejność Liczba trójkątna (TN n = sum [1..n]
)
Rozwiązanie dostarczone brzmiała:
triangularNumbers = scanl1 (+) [1..]
Tak daleko, tak dobrze.
Ale rozwiązanie I nie było wymyślić:
triangularNumbers = zipWith (+) [1..] $ 0 : triangularNumbers
który jest również poprawna.
Teraz moje pytanie brzmi: w jaki sposób przekłada się to na implementację na niższym poziomie? Co dzieje się dokładnie za sceną, gdy taka rekurencyjna definicja zostanie spełniona?
Najprawdopodobniej zostało już zadane i udzielono odpowiedzi, ale poszukiwanie "definicji rekursywnej" wywołuje tylko pytania związane z rekurencją w sensie algorytmicznym: –
[this] (https://hackhands.com/lazy-evaluation-works-haskell/) może pomóc. – Alec
Zacznij od zrozumienia '[1 ..]'. –