Haskell-型
Haskellの型について
Haskellにおける型の特徴は以下の通りです。
- 強い型付け言語です。
- データに対して型の互換性を検出し、互換性がなければエラーとしたり、型の強制変換を行います。
- 型推論機構を備えており、型が明示されない場合は可能な範囲で自動推論してくれます。
- プログラマが明示的に型宣言したい場合には「::」を使って型指定を行います。
- 型 (または型class)は常に大文字から開始します。
- なお、変数は常に小文字から始まります。
基本データ型
Int型
Int型は、システム依存の整数(32bitマシンなら32bit、64bitなら64bit)です。
Prelude> 2147483647::Int
2147483647
Prelude> 2147483648::Int
-2147483648
Integer型
Integer型は、システム依存の制限がない整数です。
Prelude> 2147483647::Integer
2147483647
Prelude> 2147483648::Integer
2147483648
Double型
Double型は、浮動小数点を扱う実数型です。
Prelude> 5::Double
5.0
Char型
Char型は文字を扱います。
「''(single quote)」で囲んで生成します。
Prelude> 'c'::Char
'c'
String型
String型は、文字列を扱います。
「""(double quote)」で囲んで生成します。
なお、実際には、文字列は[Char]型のリストとしてデータが構成されます。
Prelude> "str"::String
"str"
Prelude> ['s', 't', 'r']
"str"
Bool型
Bool型は、真偽値を扱います。
Bool型の値はTrueまたはFalseです
Prelude> True && False
False
Prelude> True || False
True
複数データの扱い
リスト(List)
リストは、同一の型のみを要素として連続データ(配列的)を扱います。
「[]」で囲み、「,(comma)」で区切ります。
詳細はHaskell-型クラスを参照下さい。
Prelude> [0,1,2,3,4,5]::[Integer]
[0,1,2,3,4,5]
タプル(Touple)
タプルは、異なる型を要素として扱い、複合的なデータ(コレクション)を表現することが出来ます。
「()」で囲み、「,(comma)」で区切ります。
Prelude> (5::Int, 5::Double, 'c', "str", True)
(5,5.0,'c',"str",True)
型シグネチャの調べ方
ghci(インタプリタ)を起動して、「:type」コマンドを実行します。
「:type」コマンドは省略して「:t」とすることも可能です。
Prelude> :type 関数名
なお、シグネチャとは英語で「署名」を意味し、プログラミングにおいては「メソッド名」「パラメータ数と順序、パラメータの型」「戻り値の型」などを指します。
「:type」コマンドは、関数の引数及び戻り値の型を表示します。
typeコマンド実行例
Prelude> :type (||)
(||) :: Bool -> Bool -> Bool
上記は「(||)関数は、引数にBool型とBool型をとり、Bool型を返す」という意味になります。
Prelude> :type tail
tail :: [a] -> [a]
上記は「tail関数は、引数に型aのリストをとり、型aのリストを返す」という意味になります。
Prelude> :type mod
mod :: (Integral a) => a -> a -> a
上記は「(+)関数は、引数に型aと型aをとって型aを返す。なお、型aはIntegralに限定される」という意味になります。
「(Integral a) =>」と言う部分は、型aをIntegralのみに限定していることを表しています。