我对haskell中的类型签名有疑问。阅读应用函子,我发现:
pure (+) <*> Just 3
它返回Just (+3)
了类型 Maybe (a->a)
。现在的签名<*>
是
(<*>) :: Applicative f => f (a -> b) -> f a -> f b
这意味着我们f b
在上面的例子中是f
用Maybe
和b
替换得到的a->a
。
在这里我有点惊讶,因为据我所知,b
无法统一(对不起,如果我没有使用指定的术语,但我希望它们足够清楚)与a->a
.
这是否可能仅仅因为我们在内部和应用函子中,或者我还缺少其他东西?