Elm (linguaggio di programmazione): differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Pil56-bot (discussione | contributi)
m smistamento lavoro sporco e fix vari
Riga 22:
== Storia ==
 
Elm è stato progettato inizialmente da Evan Czaplicki come progetto di tesi nel 2012. <ref>[http://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>[http://elm-lang.org/try Elm's Online Editor]</ref> Evan Czaplicki è entrato a far parte di [[Prezi]] nel 2013 per lavorare su Elm,<ref>[http://elm-lang.org/blog/announce/Elm-and-Prezi.elm Elm joins Prezi]</ref> e nel 2016 si è spostato in [[NoRedInk]] come ingegnere Open Source, dando inoltre vita alla Elm Software Foundation.<ref>[http://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>[http://elm-lang.org/blog/announce/Repl.elm Elm REPL announcement]</ref> un gestore di pacchetti, <ref>[http://elm-lang.org/blog/announce/PackageManager.elm Elm Package Manager announcement]</ref> un debugger che consente viaggi nel tempo, <ref>[http://debug.elm-lang.org/ Elm's Time-Traveling Debugger]</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>[http://package.elm-lang.org/packages/ Elm Public Libraries]</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">[http://elm-lang.org/learn/Syntax.elm The Syntax of Elm]</ref><ref>[http://elm-lang.org/About.elm About Elm] Elm features</ref> Le caratteristiche chiave comprendono l'immutabilità, la tipizzazione statica, e l'interoperabilità con HTML, CSS, e JavaScript.
 
=== Immutabilità ===
 
Tutti i valori in Elm sono immutabili, cioè nessun valore può essere modificato dopo che è stato creato. Elm usa strutture dati persistenti per implementare le sua librerie <code>Array</code>, <code>Dict</code>, e <code>Set</code>. <ref>[http://package.elm-lang.org/packages/elm-lang/core/latest/ Elm Standard Libraries]</ref>
 
=== Tipizzazione statica ===
Riga 49:
=== Interoperabilità con HTML, CSS, e JavaScript ===
 
Elm usa un'astrazione chiamata "porte" per comunicare con [[JavaScript]]. <ref>[http://elm-lang.org/learn/Ports.elm Ports]</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>[http://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>[http://elm-lang.org/blog/Blazing-Fast-Html.elm Blazing Fast Html]</ref>
 
== Limitazioni ==
 
Diversamente da Haskell, Elm non supporta i tipi di livello superiore, e quindi non può fornire astrazioni generiche per molte operazioni comuni. <ref>{{Cita web|titolo=Higher-Kinded types Not Expressible? #396|url=https://github.com/elm-lang/elm-compiler/issues/396|sito=github.com/elm-lang/elm-compiler|accesso=6 marzo 2015}}</ref> Per esempio, non ci sono funzioni generiche <code>map</code>, <code>apply</code>, <code>fold</code>, né <code>filter</code>. Invece, tali nomi si usano prefissi dal nome del modulo in cui sono definiti, come per <code>List.map</code> e <code>Dict.map</code>.
 
== Strumenti ==
Riga 123:
 
==Note==
<references />
{{Reflist|2}}
 
==Collegamenti esterni==