Haskell 筆記 (三) 類型

類型

Haskell有強大的類型系統

  1. 每個表達式在編譯時都會明確類型,因此可以有更多的信息來檢查錯誤。
  2. 支持類型推導。
Prelude> :t True
True :: Bool
Prelude> :t 'a'
'a' :: Char
Prelude> :t "hi"
"hi" :: [Char]
Prelude> :t (True, 'a')
(True, 'a') :: (Bool, Char)
Prelude> :t (True, "ss")
(True, "ss") :: (Bool, [Char])
Prelude> :t 4==5
4==5 :: Bool

::讀作: “它的類型爲”

4 == 5 :: Bool讀作4==5 它的類型爲 Bool

Prelude> :t cycle
cycle :: [a] -> [a]

函數也有類型, "[a] -> [a]"表示入參爲[a],返回值爲[a]。 多個入參一樣是通過“->”連接,最後一個表示返回值。

注意:凡是明確的類型,其首字母必定是大寫。

常見類型

  • Int 有界整數 範圍2的-63次方~2的63次方-1
  • Integer 無界整數 可以存放非常大的整數,但效率不如Int高。
  • Float 單精度浮點數
  • Double 雙精度浮點數
  • Bool 布爾值
  • Char 表示一個Unicode字符
  • 元祖 也是類型,不過它的類型取決於其中項的類型以及數目。理論上可以有無限種類型,實際上元祖最大項的數量爲62。 另外注意空元祖也是一種類型,只有一種值,即().

類型類

類型類是一組函數的集合,定義行爲的接口。如果一個類型是某種類型類的實例,那麼他必須實現了該類型了所描述的行爲。

  • Eq類型類
  • Ord類型類
  • Show類型類
  • Read類型類
  • Enum類型類
  • Bounded類型類
  • Num類型類
  • Floating類型類
  • Integeral類型類
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章