Elm (linguaggio di programmazione): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
|  così forse è leggermente più chiaro | m Bot: inserimento portale (via JWB) | ||
| (5 versioni intermedie di 2 utenti non mostrate) | |||
| Riga 16: }} '''Elm''' è un [[linguaggio di programmazione]] ___domain-specific per creare [[GUI|interfacce utente grafiche]] di tipo declarativo basate su [[browser web]]. Elm è puramente [[funzionale]], ed è sviluppato dando priorità all'[[usabilità]], alle prestazioni, e alla [[Robustezza (informatica)|robustezza]]. Sostiene di evitare praticamente qualunque eccezione in fase di esecuzione <ref>{{Cita web|url=https://elm-lang.org/|titolo=Elm home page}}</ref>, grazie alle verifiche statiche del [[compilatore]] Elm. == 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 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 [[Read–eval–print loop|interprete interattivo]],<ref>{{Cita web |url=https://elm-lang.org/ == Caratteristiche == Riga 43: === Sistema di moduli === Elm ha un sistema di moduli che consente ai programmatori di suddividere il loro codice in parti più piccole, chiamate "moduli". I programmatori possono importare ed esportare simboli, rendendo possibile nascondere i dettagli implementativi che non sono necessari agli altri moduli. I moduli formano la base del [[Sito web|sito Web]] della libreria della comunità di Elm, la [https://web.archive.org/web/20150211183935/http://package.elm-lang.org/packages/ Elm Public Library]. === Interoperabilità con HTML, CSS, e JavaScript === Riga 57: == Strumenti == * Editor online [ * [https:// * [https:// * [https:// * [https://lydell.github.io/elm-watch elm-watch] per sviluppo con live reload * [https://github.com/jfmengels/node-elm-review elm-review] per il linting * [https://github.com/avh4/elm-format elm-format], il formattatore standard utilizzato dalla maggior parte degli utenti == Codice di esempio == Riga 74 ⟶ 76: {- I commenti su più righe possono essere {- annidati -} -} {- La pipe (|) all'inizio del commento indica che questa è documentazione per il valore che stiamo definendo. -} saluti =     "Hello World!" {- -} ciao : String ciao =     "Ehilà." {- -} aggiungi x y =     x + y {- -} ipotenusa : Float -> Float -> Float ipotenusa a b =     sqrt (a ^ 2 + b ^ 2) -- Le espressioni `if` si usano per fare diramazioni in base a valori▼ valoreAssoluto : Int -> Int valoreAssoluto numero = ▲    -- Le espressioni `if` si usano per fare diramazioni in base a valori     if numero < 0 then         -numero     else -- I record si usano per tenere valori in campi aventi un nome▼         numero libro : { titolo:String, autore:String, pagine:Int }▼ -} ▲libro : { titolo : String, autore : String, pagine : Int } libro =     { titolo = "Steppenwolf"     , autore = "Hesse"     , pagine = 237     } {- -- Il seguente valore rappresenta un albero binario.▼ -} type Albero a     = Vuoto     | Nodo a (Albero a) (Albero a) {- -} profondita : Albero a -> Int profondita albero =     case albero of         Vuoto ->             0 Nodo valore sinistra destra ->             1 + max (profondita sinistra) (profondita destra) </syntaxhighlight> Riga 125 ⟶ 152: ==Collegamenti esterni== * {{Collegamenti esterni}} {{Portale|informatica}} [[Categoria:Linguaggi di programmazione funzionali]] | |||