In Clojure, le liste sono collezioni, proprio come le liste in altri linguaggi. Come altri linguaggi della famiglia Lisp, Clojure usa le parentesi per esprimere le liste.
Le liste di Clojure si possono creare in due modi. La funzione list può creare una lista, oppure puoi fare il quote di una lista letterale.
Le liste sono speciali perché Clojure le tratta come chiamate. Si aspetta che la chiamata inizi con un operatore, che di solito è una funzione. Gli altri elementi della lista sono considerati operandi, cioè diventano gli argomenti della funzione.
Il trattamento speciale che Clojure riserva alle liste è il motivo per cui non possiamo creare direttamente una lista letterale. Fare il quote di una lista con quote o con la sua forma abbreviata ' indica che la lista non deve essere valutata.
A differenza di alcuni linguaggi moderni, le liste di Clojure sono eterogenee, cioè possono contenere al loro interno elementi di tipi diversi, ad esempio '(2 "a" "b" 3).
A differenza di altri Lisp, una lista vuota in Clojure è truthy e non equivale a nil o false.
In questo esercizio scriverai del codice per elaborare un elenco di linguaggi di programmazione con cui hai in programma di fare pratica sulla piattaforma Exercism.
Hai sei attività.
Prima di poter aggiungere dei linguaggi, devi iniziare creando un nuovo array. Definisci una funzione che restituisce un array vuoto.
(new-list)
;; => ()
Mentre esplori Exercism e trovi linguaggi che vuoi imparare, dovrai poterli aggiungere all'array. Definisci una funzione che aggiunge un nuovo linguaggio all'inizio dell'array.
(add-language '("Clojurescript") "JavaScript")
;; => '("JavaScript" "Clojurescript")
Vorrai controllare rapidamente quale linguaggio hai appena aggiunto. Definisci una funzione che restituisce il primo linguaggio dell'array.
(first-language '("Haskell" "Python"))
;; => "Haskell"
A volte cambierai idea su un linguaggio che hai appena aggiunto. Definisci una funzione che rimuove il primo linguaggio dall'array.
(remove-language '("Common Lisp" "Racket" "Scheme"))
;; => '("Racket" "Scheme")
Contare i linguaggi uno per uno è scomodo. Definisci una funzione che conta il numero di linguaggi nell'array.
(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4
Definisci una funzione learning-list, all'interno della quale userai alcune delle funzioni definite sopra.
Crea un array vuoto
Aggiungi 2 nuovi linguaggi di programmazione all'array.
Rimuovi "Lisp" dall'array, dato che potresti non avere abbastanza tempo quest'anno ed è molto simile a Clojure.
Aggiungi altri 2 linguaggi di programmazione all'array.
Restituisci il numero totale di linguaggi. Suggerimento: dovrebbe essere 3.
(learning-list)
;; => 3
Iscriviti a Exercism per imparare e padroneggiare Clojure con 12 concetti105 esercizi e il mentoring di persone reali, tutto gratis.