Sto giocando con il linguaggio per iniziare l'apprendimento e sono perplesso oltre la mia intelligenza su come funziona una definizione ricorsiva.Come funziona (co) la definizione ricorsiva in Haskell?
Per esempio, prendiamo la sequenza dei numeri triangolari (TN n = sum [1..n]
)
La soluzione fornita era:
triangularNumbers = scanl1 (+) [1..]
Fin qui, tutto bene.
Ma la soluzione sono venuto su con era:
triangularNumbers = zipWith (+) [1..] $ 0 : triangularNumbers
che è anche corretto.
Ora la mia domanda è: come si traduce in un'implementazione di livello inferiore? Cosa succede esattamente dietro la scena quando viene soddisfatta una definizione ricorsiva?
Probabilmente è stato chiesto e risposto prima, ma la ricerca di "definizione ricorsiva" riporta solo le domande relative alla ricorsione in senso algoritmico –
[questo] (https://hackhands.com/lazy-evaluation-works-haskell/) potrebbe aiutare. – Alec
Inizia con la comprensione di '[1 ..]'. –