Descrivo questa domanda utilizzando un esempio tratto da un libro.Stampa dei passaggi di Haskell per la valutazione (riscrittura) a scopo didattico/di apprendimento. È possibile?
Nel libro di Simon Thompson "HASKELL il mestiere della programmazione funzionale" a pagina 82 (vedere le immagini di seguito) vengono visualizzati i passaggi di valutazione per fac 4
.
DOMANDA:
E 'possibile utilizzare qualche strumento o di qualche "debugger Haskell" che scrivere le fasi di valutazione che utilizza GHCi quando sarebbe valutare il valore della fac 4
?
Preferibilmente in un formato leggibile dall'uomo, per scopi didattici e di apprendimento.
Sarebbe anche utile avere una spiegazione automatica per ogni fase di valutazione, ad esempio quale equazione è stata utilizzata nella fase di riscrittura.
Il mio scopo principale è ottenere una comprensione più profonda di come vengono eseguite le fasi di riscrittura quando eseguo programmi di esempio Haskell educativi semplici (come fac
).
C'è un modo per farlo? Se sì, come?
[simple-reflect] (https://hackage.haskell.org/package/simple-reflect) può fare un po 'di questo. Ma mentre è utile per cose semplici come liste e mappe, non funziona per tutto. – genisage
puoi convertirlo in Prolog (pazza idea;) e [tracciarlo] (http://i.imgur.com/AKCFefx.png) lì ... (mostrato è il debugger grafico di SWI-Prolog). Funziona per le cose più semplici. A proposito il libro salta alcuni passaggi (i valori non sono forzati subito, ma solo se confrontati con zero). Prolog - perché le sue regole sono anche basate sulla clausola. –