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

清單上的清單上的清單

學習練習

簡介

陣列

在 Elm 中,List是不可變的集合,包含零個或多個相同型別的值。

陣列可以像這樣定義:

empty = []
singleValue = [ 5 ]
threeValues = [ "a", "b", "c" ]

將元素加入陣列最常見的方式,是透過 ::(cons)運算子:

twoToFour = [ 2, 3, 4 ]
oneToFour = 1 :: twoToFour --> [ 1, 2, 3, 4 ]

陣列可以透過定義在 List模組中的函式和運算子,或是透過模式比對來操作。

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"

說明

在這個練習中,你會寫程式來追蹤你想在 Exercism 上學習的程式語言陣列。 這個練習有六個任務,全都和處理陣列有關。

1. 建立新的陣列

為了追蹤你想學習的程式語言,你需要建立一個新的陣列。 定義newList常數,它包含一個新的空陣列。

newList
    --> []

2. 定義現有的陣列

目前你有一張紙,上面列出了你想學習的語言:Elm、Clojure 和 Haskell。 定義existingList常數來表示這個陣列。

existingList
    --> [ "Elm", "Clojure", "Haskell" ]

3. 將新的語言加入陣列

當你在 Exercism 上探索、發現更多有趣的程式語言時,會想把它們加到你的陣列裡。 實作addLanguage函式,把新的語言加到陣列開頭。

addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
    --> [ "TypeScript", "JavaScript", "CoffeeScript" ]

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

手動計算語言數量很不方便。 實作countLanguages函式,計算你的陣列裡有幾個語言。

countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
    --> 4

5. 反轉陣列

某個時刻,你會發現你的陣列其實是反過來排的! 實作reverseList函式來反轉你的陣列。

reverseList [ "Prolog", "C", "Idris", "Assembly" ]
    --> [ "Assembly", "Idris", "C", "Prolog" ]

6. 檢查陣列是否令人興奮

雖然你喜歡所有的程式語言,但 Elm 在你心中有個特別的位置。 因此,只要符合以下條件,你就會對一份程式語言陣列感到興奮:

  • 陣列的第一個元素是 Elm。
  • 或者陣列的第二個元素是 Elm,而且陣列包含三個或更少的語言。

實作excitingList函式,檢查一份程式語言陣列是否令人興奮:

excitingList [ "Nim", "Elm" ]
    --> True
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Elm Exercism

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

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