Haskell の基本型

(2008.8.18 新規作成。)

Prelude モジュールを中心として、基本的な型と主に使いそうな関数をまとめてみました。自分用のメモなので、説明はざっくりです。

基本型

Haskellの基本型には、次のようのものがあります。

リテラル説明
True, False真偽値
3整数 -- 固定倍長整数Int, 任意倍長整数Integer
2.0実数 Float, Double, Rational
'a'文字 Char
"abc"文字列 String
[1, 2, 3]リスト List。値の型は同じでなければならない。
('a', 4)タプル Tuple(組)

Bool 型

真または偽を表します。数値などからBool型への暗黙の変換はありません。

data Bool = False | True

論理演算子はC言語スタイルです。

(&&) :: Bool -> Bool -> Bool
(||) :: Bool -> Bool -> Bool
not :: Bool -> Bool

共通の演算子

いろいろな型で使える演算子は、EqクラスやOrdクラスで定義されています。

class Eq

(==) :: a -> a -> Bool
(/=) :: a -> a -> Bool
!= ではなく、/= なのが変わっている。ほかはC言語スタイルなのに。

class Ord

class Eq a => Ord a
compare :: a -> a -> Ordering
compare x y は、x, y の大小関係をEQ, LT, GT で返す。x < y のときLT.
(<) :: a -> a -> Bool
(<=) :: a -> a -> Bool
(>) :: a -> a -> Bool
(>=) :: a -> a -> Bool
max :: a -> a -> a
min :: a -> a -> a
max, min は、二つの値を比較して、大きいほう/小さいほうを返す。

数値

なんかいっぱいある。

data Int
data Integer
data Float
data Double
data Rational = Ratio Integer
class (Eq a, Show a) => Num a
class (Num a, Ord a) => Real
Integral
Fractional
Floating

文字、文字列

data Char
data String = [Char]

文字列は、実装はともかく、Char の単なるリストなので、操作についてはリストに適用できる関数がそのまま使えます。

タプル

fst :: (a, b) -> a
タプルの最初の要素を得る。
snd :: (a, b) -> b
タプルの2番目の要素を得る。

3つ以上のタプルのときはどうやって取り出すの?