sequenceA在Data.Traversable中的实现如下
sequenceA :: Applicative f => t (f a) -> f (t a)
sequenceA = traverse id
Run Code Online (Sandbox Code Playgroud)
我无法理解的类型traverse id。traverse的类型为:traverse :: Applicative f => (a -> f b) -> t a -> f (t b)其第一个参数的类型为:(a -> f b)但是对于sequenceA,id函数的类型为(a -> a)。f在哪里?
我试图了解如何使用bind(>> =)实现连接.
join x = x >>= id
Run Code Online (Sandbox Code Playgroud)
id的类型为(a - > a),但bind需要类型(a - > mb)的函数.我无法匹配这种类型.