Haskellの型推論に任せず、明示的に関数の型を宣言する。次の関数は、戻り値の精度が違う。
circumference :: Float -> Float
circumference r = 2 * pi * r
circumference' :: Double -> Double
circumference' r = 2 * pi * r
関数については、一般に型宣言をすることが望ましいとされる。値についても、非決定な場合は、明示する必要がある。
read "1"
は型が曖昧なのでエラー。型宣言すればOK!
read "1" :: Int
[a] -> a
[a,a,a] -> [a,a]
みたいなやつ。
2つの要素について、同じか、違うかが定義されている型(のクラス)
2つの要素について、どちらが大きいか(小さいか)定義されている型(のクラス)
伊藤さんの名言「性別はOrd型クラスではない」
次の要素が定義されている型(のクラス)
succ 0
succ 'a'
↑それぞれ、1, 'b'を返す。
- Num
- Integral
- Int
- Integer
- Floating
- Float
- Double
- Integral