學習軌道
/
Clojure
Clojure
/
練習
/
清單上的清單上的清單
清單上的清單上的清單

清單上的清單上的清單

學習練習

簡介

在 Clojure 中,陣列是一種集合,就像其他語言中的陣列一樣。與 Lisp 家族的其他語言類似,Clojure 使用括號來表示陣列。

Clojure 的陣列可以透過兩種方式建立:用list函式建立陣列,或是對字面值陣列使用quote。

陣列之所以特別,是因為 Clojure 會把它們當成_呼叫_來處理。它期望呼叫以_運算子_開頭,而運算子通常是函式。陣列中其餘的項目則視為_運算元_,也就是會成為該函式的引數。

正因為 Clojure 對陣列有這樣特殊的處理方式,我們無法直接建立陣列的字面值。使用quote或其簡寫'來 quote 一個陣列,表示這個陣列不應該被求值。

和一些現代語言不同,Clojure 的陣列是_異質的_,意思是它們內部可以包含多種型別的項目,例如'(2 "a" "b" 3)。

和其他 Lisp 不同,Clojure 中的空陣列為真,並不等於nil或false。

說明

在這份練習中,你會撰寫程式碼,處理一份你打算在 Exercism 平台上練習的程式語言陣列。

這個練習有六個任務。

1. 建立新陣列

在新增語言之前,你需要先建立一個新的陣列。定義一個會回傳空陣列的函式。

(new-list)
;; => ()

2. 新增語言到陣列中

當你探索 Exercism 並找到想學習的語言時,你需要能把它們加進陣列。定義一個函式,將新的語言新增到陣列開頭。

(add-language '("Clojurescript") "JavaScript")
;; => '("JavaScript" "Clojurescript")

3. 檢查最後新增的語言

你會想快速檢查自己剛才新增了哪個語言。定義一個函式,回傳陣列中的第一個語言。

(first-language '("Haskell" "Python"))
;; => "Haskell"

4. 從陣列中移除第一個語言

有時候你會改變心意,不想用剛才新增的語言。定義一個函式,從陣列中移除第一個語言。

(remove-language '("Common Lisp" "Racket" "Scheme"))
;; => '("Racket" "Scheme")

5. 計算陣列中的語言數量

一個一個數語言很不方便。定義一個函式來計算陣列中的語言數量。

(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4

6. 整合全部功能

定義一個learning-list函式,並在其中使用前面定義過的幾個函式。

  • 建立一個空陣列

  • 新增 2 個程式語言到陣列中。

    • "Clojure"
    • "Lisp"
  • 從陣列中移除 "Lisp",因為你今年可能沒那麼多時間,而且它和 Clojure 相當類似。

  • 再新增 2 個程式語言到陣列中。

    • "Java"
    • "JavaScript"
  • 回傳語言的總數。提示:結果應該是 3。

(learning-list)
;; => 3
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Clojure Exercism

準備好開始 清單上的清單上的清單 了嗎?

註冊 Exercism,透過 12 個概念105 個練習 和真人引導來學習並精通 Clojure,全部免費。