Az Elmben a List nulla vagy több azonos típusú értékből álló, megváltoztathatatlan gyűjtemény.
A listákat így definiálhatod:
empty = []
singleValue = [ 5 ]
threeValues = [ "a", "b", "c" ]
A leggyakoribb módja annak, hogy elemet adj egy listához, a :: (cons) operátor:
twoToFour = [ 2, 3, 4 ]
oneToFour = 1 :: twoToFour --> [ 1, 2, 3, 4 ]
A listákat a List modulban definiált függvényekkel és operátorokkal, illetve mintaillesztéssel kezelheted
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"
Ebben a feladatban olyan kódot írsz majd, amely egy listát vezet azokról a programozási nyelvekről, amelyeket az Exercism-ön szeretnél megtanulni. Hat részfeladat vár rád, és mindegyik a listákkal való munkáról szól.
Ahhoz, hogy számon tudd tartani, milyen nyelveket szeretnél megtanulni, létre kell hoznod egy új listát.
Definiáld a newList konstanst, amely egy új, üres listát tartalmaz.
newList
--> []
Jelenleg van egy papírod, amelyen azok a nyelvek szerepelnek, amelyeket meg szeretnél tanulni: az Elm, a Clojure és a Haskell.
Definiáld az existingList konstanst, hogy ezt a listát reprezentálja.
existingList
--> [ "Elm", "Clojure", "Haskell" ]
Ahogy felfedezed az Exercism-öt, és egyre érdekesebb nyelvekre bukkansz, szeretnéd ezeket felvenni a listádra.
Valósítsd meg az addLanguage függvényt, amely egy új nyelvet szúr be a lista elejére.
addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
--> [ "TypeScript", "JavaScript", "CoffeeScript" ]
A nyelvek kézi megszámolása kényelmetlen.
Valósítsd meg a countLanguages függvényt, amely megszámolja, hány nyelv van a listádon.
countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
--> 4
Egy ponton rájössz, hogy a listád valójában visszafelé van rendezve!
Valósítsd meg a reverseList függvényt, amely megfordítja a listádat.
reverseList [ "Prolog", "C", "Idris", "Assembly" ]
--> [ "Assembly", "Idris", "C", "Prolog" ]
Bár minden nyelvet szeretsz, az Elm különleges helyet foglal el a szívedben. Ezért igazán izgatott leszel egy nyelvlistától, ha:
Valósítsd meg az excitingList függvényt, amely ellenőrzi, hogy egy nyelvlista izgalmas-e:
excitingList [ "Nim", "Elm" ]
--> True
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Elm nyelvet 28 fogalom110 feladat segítségével, valódi emberi mentorálással, mindez ingyen.