Elm의 List는 같은 타입의 값 0개 이상을 담는 불변 컬렉션이에요.
배열은 다음과 같이 정의할 수 있어요:
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
Exercism에 가입하고 Elm 트랙을 개념 28개연습 문제 110개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.