Remove ads
来自维基百科,自由的百科全书
在函數式程式設計中,函子(functor)是受到範疇論函子啟發的一種設計模式,它允許泛化類型在內部應用一個函式而不改變泛化類型的結構。函子形成了更複雜的抽象如應用式、單子、Comonad的基礎。
class Functor f where
fmap :: (a -> b) -> f a -> f b
具有叫做「函子定律」的條件:
fmap id = id
fmap (g . h) = (fmap g) . (fmap h)
在Scala中使用高種類類型:
trait Functor[F[_]] {
def map[A,B](a: F[A])(f: A => B): F[B]
}
其簡單的例子是可選類型和搜集類型。函子可用於建模「函式作用」來向仍未完成的計算應用一個函式。
在C++中,名字「函子」指稱的是函式對象而非這裡的定義。
這是一篇與軟體相關的小作品。您可以透過編輯或修訂擴充其內容。 |
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.