트랙
/
Clojure
Clojure
/
연습 문제
/
트랙 위의 트랙 위의 트랙
트랙 위의 트랙 위의 트랙

트랙 위의 트랙 위의 트랙

학습 연습 문제

소개

다른 언어의 배열과 마찬가지로, Clojure에서 배열도 컬렉션이에요. Lisp 계열의 다른 언어들처럼, Clojure는 괄호로 배열을 표현해요.

Clojure 배열은 두 가지 방법으로 만들 수 있어요. list 함수로 배열을 만들거나, 리터럴 배열을 quote할 수 있어요.

배열이 특별한 이유는 Clojure가 배열을 _호출_로 취급하기 때문이에요. 호출은 보통 함수인 _연산자_로 시작해요. 배열의 나머지 항목은 _피연산자_로 간주되어, 함수의 인자가 돼요.

Clojure가 배열을 특별하게 취급하기 때문에 배열 리터럴을 직접 만들 수 없어요. 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"
  • 한 해 동안 시간이 부족할 수도 있고 Clojure와 꽤 비슷하기도 하니, 배열에서 "Lisp"을 제거해요.

  • 배열에 프로그래밍 언어 2개를 더 추가해요.

    • "Java"
    • "JavaScript"
  • 언어의 총 개수를 반환해요. 힌트: 3이 되어야 해요.

(learning-list)
;; => 3
GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Clojure Exercism

트랙 위의 트랙 위의 트랙 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Clojure 트랙을 개념 12개연습 문제 105개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.