Στην Clojure, οι λίστες είναι συλλογές, όπως ακριβώς οι λίστες σε άλλες γλώσσες. Όπως και άλλες γλώσσες της οικογένειας Lisp, η Clojure χρησιμοποιεί παρενθέσεις για να εκφράσει λίστες.
Οι λίστες της Clojure μπορούν να δημιουργηθούν με έναν από δύο τρόπους. Η συνάρτηση list μπορεί να δημιουργήσει μια λίστα, ή μπορείς να κάνεις quote σε μια λίστα literal.
Οι λίστες είναι ξεχωριστές γιατί η Clojure τις αντιμετωπίζει ως κλήσεις. Περιμένει η κλήση να ξεκινά με έναν τελεστή, που συνήθως είναι μια συνάρτηση. Τα υπόλοιπα στοιχεία της λίστας θεωρούνται τελούμενα, δηλαδή γίνονται τα ορίσματα της συνάρτησης.
Η ειδική μεταχείριση των λιστών από τη Clojure είναι ο λόγος που δεν μπορούμε να δημιουργήσουμε απευθείας μια λίστα literal. Το να κάνεις quote σε μια λίστα, με το quote ή τη συντομογραφία του ', δείχνει ότι η λίστα δεν πρέπει να αξιολογηθεί.
Σε αντίθεση με κάποιες σύγχρονες γλώσσες, οι λίστες της Clojure είναι ετερογενείς, δηλαδή μπορούν να περιέχουν στοιχεία διαφορετικών τύπων, π.χ. '(2 "a" "b" 3).
Σε αντίθεση με άλλες Lisp, μια κενή λίστα στη Clojure είναι truthy και δεν είναι ισοδύναμη με nil ή false.
Σε αυτή την άσκηση θα γράψεις κώδικα για να επεξεργαστείς μια λίστα με γλώσσες προγραμματισμού που σκοπεύεις να εξασκήσεις από την πλατφόρμα Exercism.
Έχεις έξι εργασίες.
Πριν μπορέσεις να προσθέσεις γλώσσες, θα πρέπει να ξεκινήσεις δημιουργώντας μια νέα λίστα. Όρισε μια συνάρτηση που επιστρέφει μια κενή λίστα.
(new-list)
;; => ()
Καθώς εξερευνάς το Exercism και βρίσκεις γλώσσες που θέλεις να μάθεις, θα πρέπει να μπορείς να τις προσθέτεις στη λίστα σου. Όρισε μια συνάρτηση που προσθέτει μια νέα γλώσσα στην αρχή της λίστας σου.
(add-language '("Clojurescript") "JavaScript")
;; => '("JavaScript" "Clojurescript")
Θα θέλεις να ελέγχεις γρήγορα ποια γλώσσα μόλις πρόσθεσες. Όρισε μια συνάρτηση που επιστρέφει την πρώτη γλώσσα από τη λίστα σου.
(first-language '("Haskell" "Python"))
;; => "Haskell"
Μερικές φορές θα αλλάξεις γνώμη για μια γλώσσα που μόλις πρόσθεσες. Όρισε μια συνάρτηση που αφαιρεί την πρώτη γλώσσα από τη λίστα σου.
(remove-language '("Common Lisp" "Racket" "Scheme"))
;; => '("Racket" "Scheme")
Το να μετράς τις γλώσσες μία προς μία δεν είναι βολικό. Όρισε μια συνάρτηση που μετράει τον αριθμό των γλωσσών στη λίστα σου.
(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4
Όρισε μια συνάρτηση learning-list, μέσα στην οποία θα χρησιμοποιήσεις μερικές από τις συναρτήσεις που όρισες παραπάνω.
Δημιούργησε μια κενή λίστα
Πρόσθεσε 2 νέες γλώσσες προγραμματισμού στη λίστα.
Αφαίρεσε τη "Lisp" από τη λίστα, καθώς μπορεί να μην έχεις αρκετό χρόνο για τη χρονιά, και μοιάζει αρκετά με την Clojure.
Πρόσθεσε άλλες 2 γλώσσες προγραμματισμού στη λίστα.
Επίστρεψε τον συνολικό αριθμό των γλωσσών. Υπόδειξη: θα πρέπει να είναι 3.
(learning-list)
;; => 3
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Clojure με 12 έννοιες105 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.