从函子到单子:代码中的形状故事
2024-11-12
本文探讨了Haskell中函子、应用函子、单子和遍历等抽象概念的核心思想:与其关注fmap改变了什么,不如思考fmap保持了什么不变。作者引入了“形状”的概念,即fmap所保持的不变性质。文章列举了各种函子的例子,例如列表、Maybe、Either、Map、IO、Writer、State、ConduitT和Parser等,并解释了它们各自的“形状”。文章进一步阐述了应用函子如何将形状进行幺半群组合,以及单子如何允许最终形状依赖于中间结果。最后,文章讨论了自由结构如何基于预定义的形状创建应用函子和单子。
16
未分类