函子 (函數式程式設計)
在函數式程式設計中,函子(functor)是受到範疇論函子啟發的一種設計模式,它允許泛化類型在內部應用一個函式而不改變泛化類型的結構。函子形成了更複雜的抽象如應用式、單子、Comonad的基礎。
概述
class Functor f where
fmap :: (a -> b) -> f a -> f b
具有叫做「函子定律」的條件:
fmap id = id
fmap (g . h) = (fmap g) . (fmap h)
trait Functor[F[_]] {
def map[A,B](a: F[A])(f: A => B): F[B]
}
其簡單的例子是可選類型和搜集類型。函子可用於建模「函式作用」來向仍未完成的計算應用一個函式。
在C++中,名字「函子」指稱的是函式對象而非這裡的定義。
參見
外部連結
- section about Functor in Haskell Typeclassopedia (頁面存檔備份,存於網際網路檔案館)
- chapter 11 Functors, Applicative Functors and Monoids in Learn You a Haskell for Great Good! (頁面存檔備份,存於網際網路檔案館)
- documentation for Functor in Cats library (頁面存檔備份,存於網際網路檔案館) (in scala)
- section about Functor in lemastero/scala_typeclassopedia (頁面存檔備份,存於網際網路檔案館)
這是一篇與軟體相關的小作品。您可以透過編輯或修訂擴充其內容。 |