Learn You a Haskell中的一个例子是:
pure (+) <*> Just 3 <*> Just 5
他说:
所以一开始,我们有
pure (+)
,即Just (+)
我假设 Haskell 正在函数上使用类型推断<*>
来确定pure
LHS 上的函数将来自类型类的Maybe
实例Applicative
(基于我们在Just 5
RHS 上使用的事实,并且Just
是 a Maybe
)。
但是,是否有过这样的情况,您想使用该pure
方法将一个值转换为 Applicative Functor,但您不会立即通过该<*>
函数使用它,因此 Haskell 无法确定要使用哪个pure
函数利用?如果是这样,您将如何明确说明pure
要使用哪个功能?
或者,是不是 Haskell 不会尝试确定哪个pure
函数,直到函数的结果pure
在某些上下文中使用(例如当你<*>
在某个时候将它提供给函数时)