Una List in Elm è una collezione immutabile di zero o più valori dello stesso tipo.
Le liste possono essere definite come segue:
empty = []
singleValue = [ 5 ]
threeValues = [ "a", "b", "c" ]
Il modo più comune per aggiungere un elemento a una lista è tramite l'operatore :: (cons):
twoToFour = [ 2, 3, 4 ]
oneToFour = 1 :: twoToFour --> [ 1, 2, 3, 4 ]
Le liste vengono manipolate da funzioni e operatori definiti nel modulo List o tramite pattern matching
describe : List String -> String
describe list =
case list of
[] ->
"Empty list"
[ "hello" ] ->
"Singleton list with: hello"
x :: xs ->
"Non-empty list with head: " ++ x
describe [] --> "Empty list"
describe [ "hello" ] --> "Singleton list with: hello"
describe [ "hello", "world" ] --> "Non-empty list with head: hello"
In questo esercizio scriverai codice per tenere traccia di un array di linguaggi di programmazione che vuoi imparare su Exercism. Hai sei attività, che avranno tutte a che fare con gli array.
Per tenere traccia dei linguaggi che vuoi imparare, dovrai creare un nuovo array.
Definisci la costante newList che contiene un nuovo array vuoto.
newList
--> []
Al momento hai un foglio di carta che elenca i linguaggi che vuoi imparare: Elm, Clojure e Haskell.
Definisci la costante existingList per rappresentare questo array.
existingList
--> [ "Elm", "Clojure", "Haskell" ]
Mentre esplori Exercism e trovi linguaggi più interessanti, vuoi aggiungerli all'array.
Implementa la funzione addLanguage per aggiungere un nuovo linguaggio all'inizio dell'array.
addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
--> [ "TypeScript", "JavaScript", "CoffeeScript" ]
Contare i linguaggi manualmente è scomodo.
Implementa la funzione countLanguages per contare il numero di linguaggi nell'array.
countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
--> 4
A un certo punto, ti rendi conto che l'array è in realtà ordinato al contrario!
Implementa la funzione reverseList per invertire l'array.
reverseList [ "Prolog", "C", "Idris", "Assembly" ]
--> [ "Assembly", "Idris", "C", "Prolog" ]
Anche se ami tutti i linguaggi, Elm ha un posto speciale nel tuo cuore. Perciò, un array di linguaggi ti entusiasma davvero se:
Implementa la funzione excitingList per verificare se un array di linguaggi è entusiasmante:
excitingList [ "Nim", "Elm" ]
--> True
Iscriviti a Exercism per imparare e padroneggiare Elm con 28 concetti110 esercizi e il mentoring di persone reali, tutto gratis.