Skip to the content.

型クラスと抽象

出典: https://wiki.haskell.org/wikiupload/8/85/TMR-Issue13.pdf

宣言

class Show a where
    show :: a -> String

Show は型クラス、show はメソッドと呼ぶ。

実装

instance Show Bool where
    show True  = "True"
    show False = "False"

これでBool型はShowのインスタンスになる。 例えばprint :: Show a => a -> IO ()の型aにはShowのインスタンスであれば何でも使うことが出来る。

代数的な型クラス

Ord

Num

Semigroup

Monoid

lists are not free monoids in Haskell.

出典: Free Monoids in Haskell

Formatting

format ("Person's name is " % text % ", age is " % hex) "Dave" 54

Deriving

多相型