附錄 B:範疇論名詞在泛函編程中的中英對照字典
範疇論的名詞在進入程式設計社群後,常出現「同詞不同義」或「譯名分歧」的現象。本字典列出本書使用的譯名與英文原文,並標註對應的程式概念。
B.1.1 基礎概念
| 中文譯名 | 英文 | 程式概念 | Haskell 中出現 |
| 範疇 | Category | 型別 + 純函數的世界 | Category typeclass |
| 物件 | Object | 型別(Type) | *(kind) |
| 態射 | Morphism | 純函數(Pure Function) | a -> b |
| 態射合成 | Composition | 函數合成 | (.) |
| 恆等態射 | Identity | 恆等函數 | id |
| 同構 | Isomorphism | 雙向可轉換的型別 | Iso、newtype 包裝 |
B.1.2 建構子
| 中文譯名 | 英文 | 程式概念 |
| 積 | Product | (a, b)、struct |
| 餘積/和 | Coproduct / Sum | Either a b、enum |
| 指數物件 | Exponential | 函數型別 b -> a |
| 極限 | Limit | 廣義的「解方程式」型別 |
| 餘極限 | Colimit | 廣義的「合併」型別 |
| 起始物件 | Initial Object | Void(無值型別) |
| 終端物件 | Terminal Object | ()(單位型別) |
B.1.3 結構保持
| 中文譯名 | 英文 | 程式概念 |
| 函子 | Functor | Functor typeclass:fmap :: (a->b) -> f a -> f b |
| 自然變換 | Natural Transformation | forall a. f a -> g a |
| 恆等函子 | Identity Functor | Identity |
| 積函子 | Product Functor | (,) |
| 自函子 | Endofunctor | 從型別範疇到自己的映射 |
B.1.4 Monad 相關
| 中文譯名 | 英文 | 程式概念 |
| 單子 | Monad | Monad typeclass |
| 單元(回傳) | Unit / Return / η | return :: a -> m a |
| 連接/延伸 | Bind / Multiplication / μ | (>>=)、join |
| 自 Monoid | Monoid in Category of Endofunctors | Mac Lane 的著名定義 |
| 可應用函子 | Applicative Functor | 介於 Functor 與 Monad 之間 |
| 自然變換之垂直合成 | God welding | Applicative 的 <*> |
B.1.5 代數結構
| 中文譯名 | 英文 | 程式概念 |
| 半群 | Semigroup | Semigroup:只有 <> |
| 幺半群 | Monoid | Monoid:<> + mempty |
| 群 | Group | Semigroup + 逆元(少見於主流語言) |
| 環 | Ring | 數值型別上的 + 與 * |
| F-代數 | F-Algebra | 摺疊(fold)的數學基礎 |
| F-餘代數 | F-Coalgebra | 展開(unfold)與無限流的基礎 |
| 起始代數 | Initial Algebra | 代數資料型別(如 Nat、List) |
| 終餘代數 | Terminal Coalgebra | 無限結構(如 Stream) |
| 參數性 | Parametricity | 「免費定理」的來源 |
B.1.6 常見易混淆詞
- Functor(函子) vs Function(函數):函子是「型別之間的映射」,函數是「值之間的映射」。
- Monoid(幺半群) vs Monad(單子):兩者皆含「單位元 + 結合」的概念,但 Monad 是「型別層次的幺半群」。
- Product(積):數學中的卡氏積;程式中的 tuple。注意:在 OOP 中 "product" 常指產品,意義完全不同。
- Subtype(子型別) vs Subset(子集):子型別關係在原則上不必是集合包含(例如「可排序」的子型別)。
小結
範疇論術語在程式設計中的用法,本質上是數學原義的「具象化」:理解這張字典,就能在閱讀 Haskell 型別類文件與範疇論教科書時對號入座,避免誤解。