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のみに限定していることを表しています。



関連ページ