У Clojure списки є колекціями, так само як списки в інших мовах. Як і в інших мовах сімʼї Лісп, Clojure використовує круглі дужки, щоб записати списки.
Список у Clojure можна створити одним із двох способів. Функція list створює список, або ж до літерального списку можна застосувати quote.
Списки особливі тим, що Clojure трактує їх як виклики. Виклик має починатися з оператора, яким зазвичай є функція. Решту елементів списку вважають операндами, тобто вони стають аргументами функції.
Саме через особливе ставлення Clojure до списків ми не можемо створити літерал списку безпосередньо. Якщо взяти список у лапки за допомогою quote або його скорочення ', це означає, що список не слід обчислювати.
На відміну від деяких сучасних мов, списки в Clojure гетерогенні, тобто всередині вони можуть містити елементи різних типів, наприклад '(2 "a" "b" 3).
На відміну від інших Ліспів, порожній список у Clojure є правдивим і не дорівнює 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 вправ та справжнє наставництво від людей, і все це безкоштовно.