撰写应用功能

时间:2015-07-12 16:19:57

标签: haskell functor applicative function-composition

请执行以下功能:

composeApplicative :: (Applicative f) => f (b -> c) -> f (a -> b) -> f (a -> c)

这样:

(composeApplicative f g) <*> x == f <*> (g <*> x)

或者,解释为什么不能这样做?

1 个答案:

答案 0 :(得分:6)

可以这样做:

composeApplicative p q = (.) <$> p <*> q

有关更多信息,请read the documentation for Applicative functors,更具体地说,是组成法。它实际上是一个声明,任何Applicative实例,composeApplicative f g <*> x必须始终等于f <*> (g <*> x)

作为次要技术说明,在进行等式推理时,方程的左侧和右侧必须用单个等号(=)分隔。双等号(==)保留给decidable runtime equality checks