前回の続き.
静的型チェックと型推論
静的な: 「コンパイル時に」.つまりコンパイル時に処理系が型をチェックしてくれるということ.
型推論: 引数や返り値の型宣言を省略しても、言語処理系がその型を推論して補ってくれる→Haskellでは、必ずしも型を明示的に書かなくてもいい.
基本的な型
・Int: 最低30ビット幅の符号付き整数値 ※例 -1, 0, 1, 1000
・Char: 文字 ※例 a
, A
, \n
・String: 文字列 ※例 "abc", "String"
・Bool: 真偽値 ※例 True, False
・[◯◯]: ◯◯のリスト.[Char], [Int]など ※例 [1, 2, 3]
この他にもあるがまた今度.
関数の型
引数の型と返り値の型の組み合わせで関数の型の表現をする.
例えば、引数が文字列で、返り値がリストであるlines関数は、以下.
String -> [String]
これは、第一引数がStringで、第二引数が[String]の関数の型.
一般に関数の型は以下のように表す.
第一引数の型 -> 第二引数の型 ->...->返り値の型
型変数
例として、length関数の型を見た時、その型は
[a] -> Int
であり、このaを型変数と言い、どんな型と置き換えても良いことを表す.aに限らずアルファベット小文字であれば何でも使える.
型の宣言
Haskell処理系では型推論の機能があるので、必ずしも型を宣言する必要はないが、明示的に型を宣言することもできる.一般的な型の宣言は以下.
関数名::第一引数の型 -> 第二引数の型 ->...-> 返り値の型
出典
青木峰郎.ふつうのHaskellプログラミング ふつうのプログラマのための関数型言語入門.ソフトバンク クリエイティブ株式会社,2006,372p.