在 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 上學習的程式語言陣列。 這個練習有六個任務,全都和處理陣列有關。
為了追蹤你想學習的程式語言,你需要建立一個新的陣列。
定義newList常數,它包含一個新的空陣列。
newList
--> []
目前你有一張紙,上面列出了你想學習的語言:Elm、Clojure 和 Haskell。
定義existingList常數來表示這個陣列。
existingList
--> [ "Elm", "Clojure", "Haskell" ]
當你在 Exercism 上探索、發現更多有趣的程式語言時,會想把它們加到你的陣列裡。
實作addLanguage函式,把新的語言加到陣列開頭。
addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
--> [ "TypeScript", "JavaScript", "CoffeeScript" ]
手動計算語言數量很不方便。
實作countLanguages函式,計算你的陣列裡有幾個語言。
countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
--> 4
某個時刻,你會發現你的陣列其實是反過來排的!
實作reverseList函式來反轉你的陣列。
reverseList [ "Prolog", "C", "Idris", "Assembly" ]
--> [ "Assembly", "Idris", "C", "Prolog" ]
雖然你喜歡所有的程式語言,但 Elm 在你心中有個特別的位置。 因此,只要符合以下條件,你就會對一份程式語言陣列感到興奮:
實作excitingList函式,檢查一份程式語言陣列是否令人興奮:
excitingList [ "Nim", "Elm" ]
--> True