Elm (linguaggio di programmazione): differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
m Bot: inserimento portale (via JWB) |
|||
| (10 versioni intermedie di 7 utenti non mostrate) | |||
Riga 1:
{{Linguaggio di programmazione
|nome = Elm
|autore = [[Evan Czaplicki]]
|data = [[2012]]
|versione = 0.
|utilizzo = generazione pagine Web dinamiche
|paradigmi = [[programmazione funzionale]]
Riga 17 ⟶ 16:
}}
'''Elm''' è un [[linguaggio di programmazione]] ___domain-specific per creare
== 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 ==
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# |
=== Immutabilità ===
Riga 44 ⟶ 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 58 ⟶ 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 ==
<
-- Questo è un commento su una sola riga
Riga 75 ⟶ 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>
==Note==
Riga 125 ⟶ 151:
==Collegamenti esterni==
* {{Collegamenti esterni}}
{{Portale|informatica}}
[[Categoria:Linguaggi di programmazione funzionali]]
| |||