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

Tracks on Tracks on Tracks

学習演習

はじめに

配列

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で学びたいプログラミング言語の配列を管理するコードを書きます。 タスクは6つあり、いずれも配列を扱います。

1. 新しい配列を作成する

学びたい言語を管理するには、新しい配列を作成する必要があります。 空の新しい配列を格納するnewList定数を定義します。

newList
    --> []

2. 既存の配列を定義する

今、学びたい言語を書き出した紙が1枚あります。Elm、Clojure、Haskellです。 この配列を表すexistingList定数を定義します。

existingList
    --> [ "Elm", "Clojure", "Haskell" ]

3. 配列に新しい言語を追加する

Exercismを見て回って、もっと面白い言語を見つけたら、自分の配列に追加したくなります。 配列の先頭に新しい言語を追加するaddLanguage関数を実装します。

addLanguage "TypeScript" [ "JavaScript", "CoffeeScript" ]
    --> [ "TypeScript", "JavaScript", "CoffeeScript" ]

4. 配列内の言語を数える

言語を手作業で数えるのは面倒です。 配列にある言語の数を数えるcountLanguages関数を実装します。

countLanguages [ "C#", "Racket", "Rust", "Ruby" ]
    --> 4

5. 配列を逆にする

しばらくして、自分の配列が実は逆順になっていることに気づきます! 配列を逆にするreverseList関数を実装します。

reverseList [ "Prolog", "C", "Idris", "Assembly" ]
    --> [ "Assembly", "Idris", "C", "Prolog" ]

6. 配列がワクワクするものか確認する

どの言語も好きですが、Elmは心の中でも特別な存在です。 そのため、次のような言語の配列には、とてもワクワクします。

  • 配列の最初の要素がElmである。
  • または、配列の2番目の要素がElmで、配列に含まれる言語が3つ以下である。

言語の配列がワクワクするものかどうかを確かめるexcitingList関数を実装します。

excitingList [ "Nim", "Elm" ]
    --> True
GitHubで編集する リンクは新しいウィンドウまたはタブで開きます
Elm Exercism

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

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