函数式编程基础--范畴论和Functor

MathematistanHiresForChalkdust

Martin Kuppe曾经绘制了一幅数学的景观图,在这幅图中,数学的分支分布在大陆的各个地方。在这其中有一个高高悬浮的月亮,它提供了一望无际的地形,使我们能够看到各个领域之间的关系,这些关系在地面上可能是无法察觉的,这证明数学中看似不相关的领域其实也不是那么不同。而这个强大的月亮就是Category Theory(范畴论)。

函数式编程基础--Applicative Functor

blog-applicative-02

函数式编程基础[一]–范畴论和Functor 中,我们了解了什么是Category和Functors,现在我们继续往下看Applicative Functor。

先快速回顾一下Functor,我们知道Maybe Functor可以帮我们实现下面的运算:

1
2
3
-- fmap :: (Int -> Int) -> Maybe Int -> Maybe Int
fmap negate (Just 2) -- Just (-2)
fmap negate Nothing  -- Nothing

但是我们如何计算两个Maybe值的和呢?比如 Just(3) + Just(2). 这就是Applicative要帮我们解决的问题。