我正在学习Haskell的Applicatives。在我看来(我可能错了),pure实际上并不需要该功能,例如:
pure (+) <*> [1,2,3] <*> [3,4,5]可以写成
(+) <$> [1,2,3] <*> [3,4,5]有人可以解释该pure函数提供的显式映射所带来的好处fmap吗?
                  我没有时间来回答这个问题,也不相信这无论如何都会是一个好的或完整的回答,但是有一个观察结果:
                
                  
                    —
                    Robin Zigmond 
                    
                  
                
              pure允许一个人在应用计算中使用“纯”值。虽然,当你正确地观察,pure f <*> x是一样的f <$> x,不存在这样的等价条件,比方说f <*> x <*> pure y <*> z。(至少我不这么认为。)
                
                  @RobinZigmond 
                
                  
                    —
                    HTNW 
                    
                  
                
              fmap (\f' x' z' -> f' x' y z') f <*> x <*> z,我想。该想法在Applicative文档中被称为“交换”定律。
                
pure f <*> x与完全相同fmap f x。我相信,有一些理由pure被列入Applicative,但我不完全知道为什么。