Elm un'alternativa a javascript
Cos’è?
Elm é un linguaggio Open Source (rilasciato con licenza BSD) puramente funzionale nato dalla tesi di laurea di Evan Czaplicki nel 2012.
Ad oggi il linguaggio è arrivato alla versione 0.19.1
ed è circondato da una buona comunità di
estimatori.
Elm si caratterizza per essere “domain-specific”, il suo target è la produzione di interfacce grafiche per il web.
Il compilatore Elm genera il codice Javascript necessario all’esecuzione dell’applicazione su un browser.
Staticamente tipizzato, il suo punto di forza è il compilatore che supporta lo sviluppatore con una messaggistica di errore ben dettagliata corredato di aiuti per la risoluzione. Di seguito un esempio:
naming error
Line 44, Column 12
I cannot find a `Timestamp` type:
44| ts : Timestamp,
^^^^^^^^^
These names seem close though:
Timstamp
Time.Zone
Task.Task
Time.Month
Hint: Read <https://elm-lang.org/0.19.1/imports> to see how `import`
declarations work in Elm.
Il linguaggio offre anche un playground web chiamato Ellie dove è possibile giocare con il linguaggio senza installare nulla sulla propria macchina.
L’architettura di Elm sviluppa un pattern conosciuto come TEA (The Elm Architecture) basato sui concetti di:
- Model,
- Update,
- View.
Questo pattern è stato fonte di ispirazione per progetti decisamente più conosciuti come Redux.
La mia esperienza
Mi sono avvicinato a Elm per provare un linguaggio pensato per il solo paradigma funzionale con una sintassi incentrata unicamente su questo. Ne ho sentito la necessità perchè provando un approccio funzionale usando altri linguaggi multi paradigma non mi sono trovato bene: quando un linguaggio ti permette di scrivere codice secondo un modello a cui si è più familiari, inevitabilmente alla prime difficoltà si tende a scrivere con quell’approccio.
Come esercizio per provare Elm, esplorarne le basi e la sintassi ho creato un piccolissimo progetto Open Source: si tratta di un’estensione per browser, disponibile per Firefox e Chrome, che permette di tradurre un timestamp numerico in una data formattata. Il progetto si chiama ts-converter è disponibile su:
- Github con licenza GPLv3,
- Mozilla Addons,
- Chrome Web Store.