# :tでその式の型を教えてくれる。 Prelude> :t 'a' 'a' :: Char Prelude> :t True True :: Bool Prelude> :t "Hello!" "Hello!" :: [Char] Prelude> :t (True, 'a') (True, 'a') :: (Bool, Char) Prelude> :t 4 == 5 4 == 5 :: Bool
なお、関数も型を持つ。
以下のような関数があったとしよう
(というか前回の関数プログラムを拝借)
-- lengthを改造(リスト内の全ての要素を1にして、全ての要素を足す=要素の長さを求められる) length' xs = sum [1 | _ <- xs ] -- リスト内の大文字の文字列を全て削除 removeNonUppercase st = [ c | c <- st, c `elem` ['A'..'Z']] -- 3つの整数を足し合わせる addThree x y z = x + y + z
# 文字列を引数として取り、別の文字列を結果として返すという意味。 Main> :t removeNonUppercase removeNonUppercase :: [Char] -> [Char] # 引数と返り値の型は -> で区切り、返り値の型は常に宣言の最後に置く Main> :t addThree addThree :: Int -> Int -> Int -> Int