Elm (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
LauBot (discussione | contributi)
m Bot: passaggio degli url da HTTP a HTTPS
Recupero di 8 fonte/i e segnalazione di 0 link interrotto/i.) #IABot (v2.0
Riga 22:
== Storia ==
 
Elm è stato progettato inizialmente da Evan Czaplicki come progetto di tesi nel 2012.<ref>[https://elm-lang.org/assets/papers/concurrent-frp.pdf Elm: Concurrent FRP for Functional GUIs]</ref> I primo rilascio di Elm era accompagnato da molti esempi e da un editor online che rendeva facile provare il linguaggio in un browser Web.<ref>{{Cita web |url=https://elm-lang.org/try# |titolo=Elm's Online Editor |accesso=4 gennaio 2017 |urlarchivio=https://web.archive.org/web/20170521144831/http://elm-lang.org/try# |dataarchivio=21 maggio 2017 |urlmorto=sì }}</ref> Evan Czaplicki è entrato a far parte di [[Prezi]] nel 2013 per lavorare su Elm,<ref>[{{Cita web |url=https://elm-lang.org/blog/announce/Elm-and-Prezi.elm |titolo=Elm joins Prezi] |accesso=1 maggio 2019 |urlarchivio=https://web.archive.org/web/20150524043516/http://elm-lang.org/blog/announce/Elm-and-Prezi.elm |dataarchivio=24 maggio 2015 |urlmorto=sì }}</ref> e nel 2016 si è spostato in [[NoRedInk]] come ingegnere Open Source, dando inoltre vita alla Elm Software Foundation.<ref>[https://elm-lang.org/blog/new-adventures-for-elm New Adventures for Elm]</ref>
 
L'implementazione iniziale del compilatore Elm genera codice HTML, CSS, e JavaScript.<ref>[https://github.com/elm-lang/Elm Elm compiler source code]</ref> L'insieme di strumenti di base si è continuato a espandere, e adesso comprende un [[interprete interattivo]],<ref>[{{Cita web |url=https://elm-lang.org/blog/announce/Repl.elm |titolo=Elm REPL announcement] |accesso=1 maggio 2019 |urlarchivio=https://web.archive.org/web/20150531012310/http://elm-lang.org/blog/announce/Repl.elm |dataarchivio=31 maggio 2015 |urlmorto=sì }}</ref> un gestore di pacchetti,<ref>[{{Cita web |url=https://elm-lang.org/blog/announce/PackageManager.elm |titolo=Elm Package Manager announcement] |accesso=1 maggio 2019 |urlarchivio=https://web.archive.org/web/20160313050335/http://elm-lang.org/blog/announce/packagemanager.elm |dataarchivio=13 marzo 2016 |urlmorto=sì }}</ref> un debugger che consente viaggi nel tempo,<ref>{{Cita web |url=http://debug.elm-lang.org/# |titolo=Elm's Time-Traveling Debugger |accesso=4 gennaio 2017 |urlarchivio=https://web.archive.org/web/20170503192633/http://debug.elm-lang.org/# |dataarchivio=3 maggio 2017 |urlmorto=sì }}</ref> e degli installatori per Mac e Windows.<ref>[https://github.com/elm-lang/elm-platform Elm Platform]</ref> Inoltre, Elm ha un ecosistema di librerie create dalla comunità di utenti.<ref>[https://package.elm-lang.org/packages/ Elm Public Libraries] {{webarchive|url=https://web.archive.org/web/20150211183935/http://package.elm-lang.org/packages/ |data=11 febbraio 2015 }}</ref>
 
== Caratteristiche ==
 
Elm ha un insieme piccolo ma espressivo di costrutti linguistici, tra cui espressioni `if`, espressioni `let`, espressioni `case`, funzioni anonime, e interpolazioni di lista.<ref name="syntax">[{{Cita web |url=https://elm-lang.org/learn/Syntax.elm |titolo=The Syntax of Elm] |accesso=1 maggio 2019 |urlarchivio=https://web.archive.org/web/20160313052210/http://elm-lang.org/learn/syntax.elm |dataarchivio=13 marzo 2016 |urlmorto=sì }}</ref><ref>[https://elm-lang.org/About.elm About Elm] {{Webarchive|url=https://web.archive.org/web/20170830200520/http://elm-lang.org/About.elm# |date=30 agosto 2017 }} Elm features</ref> Le caratteristiche chiave comprendono l'immutabilità, la tipizzazione statica, e l'interoperabilità con HTML, CSS, e JavaScript.
 
=== Immutabilità ===
Riga 39:
* tipi primitivi come interi e stringhe
* strutture dati di base come liste, ennuple, e record estendibili
* tipi personalizzati, chiamati `unioni taggate` che consentono di costruire tipi interamente nuovi <ref>{{Cita web|titolo=Model The Problem|url=https://elm-lang.org/guide/model-the-problem|sito=Elm|accesso=4 maggio 2016|cid=tagged-unions|urlarchivio=https://web.archive.org/web/20160509201212/http://elm-lang.org/guide/model-the-problem|dataarchivio=9 maggio 2016|urlmorto=sì}}</ref>
 
Elm supporta anche la completa inferenza di tipo, così che il compilatore possa verificare che un programma sia type-safe anche senza annotazioni di tipo.
Riga 51:
Elm usa un'astrazione chiamata "porte" per comunicare con [[JavaScript]].<ref>{{Cita web |url=https://elm-lang.org/learn/Ports.elm |titolo=Ports |accesso=4 gennaio 2017 |urlarchivio=https://web.archive.org/web/20160313045712/http://elm-lang.org/learn/ports.elm |dataarchivio=13 marzo 2016 |urlmorto=sì }}</ref> Consente ai valori di fluire dentro e fuori da programmi Elm, rendendo possibile comunicare fra Elm e JavaScript.
 
Elm ha una libreria chiamata "elm-html", che i programmatori possono usare per specificare codice HTML e CSS dall'interno di Elm.<ref>[https://package.elm-lang.org/packages/evancz/elm-html/latest/ elm-html documentation]</ref> Usa un approccio al [[DOM virtuale]] per rendere efficienti gli aggiornamenti.<ref>[{{Cita web |url=https://elm-lang.org/blog/Blazing-Fast-Html.elm |titolo=Blazing Fast Html] |accesso=1 maggio 2019 |urlarchivio=https://web.archive.org/web/20160313060056/http://elm-lang.org/blog/blazing-fast-html.elm |dataarchivio=13 marzo 2016 |urlmorto=sì }}</ref>
 
== Limitazioni ==
Riga 62:
* [https://github.com/elm-lang/elm-platform Piattaforma Elm] per installare localmente gli strumenti di base
* [https://web.archive.org/web/20170503192633/http://debug.elm-lang.org/ Debugger che viaggia nel tempo]
* [https://web.archive.org/web/20160312041030/http://elm-lang.org/Learnlearn.elm Risorse di apprendimento] e [https://web.archive.org/web/20160313114119/http://elm-lang.org/Examplesexamples.elm esempi]
* [https://package.elm-lang.org/packages/elm-lang/core/latest/ Librerie di base] e [https://web.archive.org/web/20150211183935/http://package.elm-lang.org/packages/ librerie della comunità]