自然法规定:
t . traverse f == traverse (t . f) -- for every applicative transformer t
现在对于法律的 RHS,如果 f 具有 type Applicative a => x -> a y
,则 t 必须是 type (Applicative a, Applicative b) => a y -> b y
,因为函数组合。
对于 LHS,遍历 f 的类型为(Applicative a, Traversable c) => c x -> a (c y)
。但是由于 traverse f 是由 t 组成的。遍历 f,t 必须是 (cx -> a (cy)) -> b y 类型。
现在,对于 LHS,t 的类型为 a (cy) -> by,但在 RHS 中,它的类型为 ay -> b y。从类型的角度来看,法律听起来如何?
编辑:修复了 LHS 中的类型 t