初識Haskell 五:自定義數據類型和類型類

Discrete Mathematics Using a Computer的第一章Introduction to Haskell進行總結。環境Windowsspa


自定義數據類型 data type definitions字符串

  形式如:it

    data Colour = Red | Orange | Yellow | Green | Blue | Violetio

  Colour type包含了Red Orange Yellow Green Blue Violet這些值,這些值是constructor,其開頭字母要大寫。class

  還有包含類型變量type variables的形式:變量

  data Animal a b = Cat a | Dog b | Rat數據類型

  自定義類型數據可用於當計算沒有結果會致使程序出錯時,可定義一個值做爲當不存在結果時的答案。要打印自定義類型的值要在定義時加deriving Show,如:程序

  data Colour = Red | Orange | Yellow | Green | Blue | Violet deriving Show。im

 自定義類型類 type class總結

  從 + 操做提及,+能夠做用於許多類型如整形和浮點型等,其得出的結果類型也不是單一的,這就有個問題:+的類型是什麼?若是是(+) :: Integer -> Integer -> Integer的話,則當浮點數相加時是不符合的,而若是是(+) :: a -> a -> a就意味着任何類型都適用,如True + False,這也不對,咱們想要的是當類型是數字numeric時適用,實際上(+)的定義爲:

  (+) :: Num a => a -> a -> a

  Num是類型類type class,Num包括Int, Integer, Float, Double等類型。Num a =>稱爲類限制(class constraint or context),表示只有當參數的類型是屬於Num時(+)才適用。

  Haskell容許自定義類型類(如何定義這本書因不涉及沒講),經常使用的類型類有Num, Show, Eq。Num表示該類是數字numeric,Show表示可轉換成字符串,Eq表示可用於比較是否相等。

相關文章
相關標籤/搜索