函子 (函數式程式設計)
![本頁使用了標題或全文手工轉換](http://images.weserv.nl/?url=//upload.wikimedia.org/wikipedia/commons/thumb/c/cd/Zh_conversion_icon_m.svg/35px-Zh_conversion_icon_m.svg.png)
在函數式程式設計中,函子(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 (頁面存檔備份,存於互聯網檔案館)
|
![]() | 這是一篇與軟件相關的小作品。您可以透過編輯或修訂擴充其內容。 |