Elm:
Utilizzo di un debugger

Come fare:

Elm non dispone di un debugger integrato nel senso tradizionale, come invece avviene per JavaScript con gli strumenti per sviluppatori del browser. Tuttavia, la comunità di Elm ha sviluppato strumenti per colmare questa lacuna. Ecco come puoi usare elm-debug-transformer per fare il debug della tua app Elm:

-- Installare elm-debug-transformer (pacchetto Node)

1. npm install -g elm-debug-transformer

-- Usare elm-debug-transformer per avviare la tua app

2. elm-debug-transformer --port=8000 yourMainElmFile.elm

Una volta che elm-debug-transformer è in esecuzione, crea una connessione WebSocket per il logging. Vedrai le informazioni di debug nella console del tuo browser dove potrai ispezionare le strutture dati del tuo programma in determinati punti della tua applicazione.

In Elm 0.19 e versioni successive, le funzioni del modulo Debug come Debug.log e Debug.todo possono aiutarti a tracciare i valori e a segnare deliberatamente le parti incomplete del tuo codice. Ecco come usare Debug.log:

import Debug

update : Msg -> Model -> ( Model, Cmd Msg )
update msg model =
    case msg of
        Increment ->
            ( Debug.log "Incrementing" { model | count = model.count + 1 }, Cmd.none )

        Decrement ->
            ( Debug.log "Decrementing" { model | count = model.count - 1 }, Cmd.none )

Vedrai messaggi “Incrementing” o “Decrementing” nella console del tuo browser insieme al nuovo stato del model.

Approfondimento

L’autore di Elm, Evan Czaplicki, aveva l’obiettivo di creare un linguaggio in cui i bug comuni fossero impossibili o facili da individuare. Questa filosofia è il motivo per cui il nucleo di Elm non include funzioni di debugging tradizionali. L’analisi statica di Elm e l’inferenza dei tipi contribuiscono massicciamente a ridurre gli errori in fase di esecuzione, il che diminuisce la necessità di debugging sofisticato in fase di esecuzione. Alternative storiche includevano l’uso dell’ormai deprecato elm-reactor che offriva il debugging con viaggio nel tempo - un modo per riavvolgere e riprodurre azioni nella tua app.

Oggi, strumenti come elm-debug-transformer e l’uso del modulo Debug di Elm aiutano a colmare il divario. Mentre il modulo Debug è inteso per l’uso durante lo sviluppo solo e dovrebbe essere rimosso prima delle build di produzione, è uno strumento inestimabile per individuare e registrare i cambiamenti di stato.

Tieni presente che le tecniche tradizionali di debugging in JavaScript, come i punti di interruzione o l’esecuzione passo-passo, non sono direttamente applicabili in Elm a causa della sua architettura e del modo in cui il runtime di Elm gestisce gli aggiornamenti di stato. Elm incoraggia a strutturare il tuo programma in modo che il flusso dei dati sia chiaro e segua garanzie di tipi stretti e immutabilità, minimizzando i casi in cui è necessario il debugging.

Vedi anche