型について

型とは、プログラミング言語中の単語の所属を表したものです。プログラミング中ではソースコードに自動で付いているラベルのようなものでもあります。Elmにはいろいろな型が用意され、自分で新しい型を定義することも出来ます。

elm-replで0と書いて、評価させてみます。

> 0
0 : number

結果、0number型と出てきます。12と書くとこれもnumber型と出てきます。 0number型所属の一員、これを0number型の実体(インスタンス)と言ったりします。

型検査(型チェック)

Elmでは型の繋がりを検査して、おかしくないか調べることがコンパイルの時に行われます。これを型検査といいます。

型検査が通ると、型の繋がりが正しく、処理がバグなく最後まで定義どおりに行われることが保証されます。

(+)中置き演算子をelm-replで見てみると、「number -> number -> number」という型になっています。なのでnumber型以外を入れると、コンパイラの時におかしいぞとエラーにして教えてくれます。

> (+)
<function> : number -> number -> number

23を見てみると、number型です。

> 2
2 : number
> 3
3 : number
> 2 + 3
5 : number

2 + 3は型が合っています。なのでエラーにはなっていません。

型検査は日本語で例えると「肉を食う」と「数字を食う」という文章があったとして、「数字」は「食え」ないからこのコードは動かないですよと教えてくれるようなものです。型チェックはつい間違えた文章を書いてしまう人間のミスを事前に教えてもらえます。意味を調べているように見えて面白いところです。

また型検査は書いてあるコードが動くかを検査するだけで、書いたコードが意図と違うとバグになります。これは「肉を食う」と書いて型検査が通るとしても、そもそも肉を食うコードが必要がなかった、といった場合です。

型の表記と推論

型の検査時に型の情報が書かれてあるとそれを使い、書かれていないと自動で型を指定して検査します。これを推論といいます。


test x =       -- 型を書いて無くても推論する。Int->Int。その上で型検査してくれる。
    x % 5

test2 : Int
test2 =
    test 10

型を明示的に指定するには、変数や関数の上の行に:を使って書きます。

age : Int              -- ageはInt型
age =
  100

square : Int -> Int    -- 関数の場合は、引数の型を矢印でつないで書いていき、最後に関数が返す型名を書きます。
square n =
  n * n

開発時は型が決まらないことも多いので、推論は便利です。

型で設計する。型で説明する。

作りたいプログラムの型になるまでの型の流れを考えてから、トップダウンでプログラムを書くことが出来ます。

型が書いてあると、読むときに何をするものなのかわかりやすくなります。

type Chara = {...}           --プログラムに必要な型を作る。

powerUp : Chara -> Chara     --プログラムに必要な型の流れを考える。
powerUp chara =  ...         --実装する

--hyouzi : Chara -> String

results matching ""

    No results matching ""