如果将变量重命名为与另一个变量相同的名称,或者将两个(或多个)变量重命名为相同的新名称,则可能发生这种冲突。如果a要b在第一个代码片段中将变量重命名为例如,那么我们将得到b -> b -> b,但这并不相同,因为从那时起,我们强制第一个和第二个参数具有相同的类型。在您的类型签名中,我们可以自由选择两个相同的类型,但这不是必需的。
不。认为a -> b -> a是This Type -> Another Type -> This Type。然后它们都适合给定的模式。但是,有些不a -> b -> c适合:(This Type -> That Type -> Yet Another Type通常)不同;除了时的边缘情况c = a,它会产生您感兴趣的图案。