トラック
/
Clojure
Clojure
/
演習
/
Tracks on Tracks on Tracks
Tracks on Tracks on Tracks

Tracks on Tracks on Tracks

学習演習

はじめに

Clojureでは、リストはコレクションであり、他の言語のリストと同じようなものです。Lispファミリーの他の言語と同様に、Clojureでは括弧(())を使ってリストを表現します。

Clojureのリストを作成する方法は2つあります。list関数でリストを作成するか、リテラルのリストをquoteするかです。

リストが特別なのは、Clojureがリストを_呼び出し_として扱うからです。呼び出しは_演算子_で始まるとみなされ、演算子はふつう関数です。リストの残りの要素は_オペランド_とみなされ、関数の引数になります。

Clojureがリストを特別に扱うため、リストのリテラルを直接作ることはできません。quoteまたはその省略形'を使ってリストをクォートすると、そのリストは評価しないという意味になります。

モダンな言語とは違い、Clojureのリストは_異種混合_です。つまり、内部に複数の型の要素を含めることができ、たとえば'(2 "a" "b" 3)です。 他のLispとは異なり、Clojureでは空のリストは真とみなされ、nilやfalseと同じではありません。

説明

この演習では、Exercismのプラットフォームで練習する予定のプログラミング言語の配列を処理するコードを書きます。

この演習には6つのタスクがあります。

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. 配列内の言語を数える

言語を1つずつ数えるのは面倒です。配列にある言語の数を数える関数を定義しましょう。

(count-languages '("C#" "Racket" "Rust" "Ruby"))
;; => 4

6. すべてをまとめる

learning-list関数を定義しましょう。この関数の中では、上で定義したいくつかの関数を使います。

  • 空の配列を作る

  • 配列に新しいプログラミング言語を2つ追加する。

    • "Clojure"
    • "Lisp"
  • 1年で学ぶには時間が足りないかもしれませんし、Clojureにとてもよく似ているので、配列から"Lisp"を削除する。

  • さらにプログラミング言語を2つ追加する。

    • "Java"
    • "JavaScript"
  • 言語の合計数を返す。ヒント:3になるはずです。

(learning-list)
;; => 3
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Clojure Exercism

Tracks on Tracks on Tracksを始める準備はできましたか?

Exercismに登録すれば、12個のコンセプト105個の演習、そして本物の人間によるメンタリングとともに、Clojureを学んでマスターできます。すべて無料です。