#author("2019-11-10T14:46:48+00:00","default:sagasite","sagasite")
[[Program]] > [[JavaScript]] > [[AltJS]] > [[Elm]] > [[Elmガイド>Elm_guide]] > [[型>Elm_guide_Types]] > 型を読む
#norelated
#contents
//----------------------------------------
*型を読む [#v117c218]
-型を読む · An Introduction to Elm https://guide.elm-lang.jp/types/reading_types.html
**型注釈(タイプアノテーション) [#fb4ea7db]
>今のところElmに型を推論させているだけですが、必要ならば、定義の上の行に型注釈を書くこともできます。
つまり、次のようにコードを書くことができます:
half : Float -> Float
half n =
n / 2
**型変数(タイプバリアブル) [#rc33ab85]
> []
[] : List a
>List aという型は、「リストがあるのはわかるが、何の型が入るかはわからない」ということを表現しています。
小文字のaは型変数と呼ばれます。
の型変数には特定の型に固定する制約がありません。
言い換えると、その型は使用方法に基づいて変化する可能性があるということです。
~
(参考)「型変数」という用語について
-Haskellの型入門 - NaCl非公式ブログ https://nacl-ltd.github.io/2017/11/30/introduction-to-type-of-haskell.html
>型変数は任意の型が入ることを示しています。
ただし同じ名前の型変数の型は、全て同じであることに注意してください。
--型変数aには「String」や「Float」などの型情報が入る。
--型変数aがStringに紐づいた場合は、以降aはString型となる。
>Note: 型変数は小文字から始めなければなりませんが、完全な単語でも構いません。
つまり例のように1文字の変数でなくても問題ありません。
List.lengthの型をList value -> Intとも書けますし、List.reverseの型はList element -> List elementとも書けます。
&color(red){小文字で始まっていれば大丈夫です。};
型変数のaやbといった1文字のものは慣例によりいたるところで使われていますが、より具体的な名前を付けたほうがいい場合もあります。
まあ、確かに「List a -> Int」と書くよりも「List value -> Int」と書いた方が、型注釈から読み取れるプログラマーの意図が明確になりますね。