我发现了以下类实例:(Monad m, (~) * a ()) => LaTeXC (LaTeXT m a)
,但是不太了解其上下文。
什么(~) * a ()
意思 我在哪里可以读到它?
(~)
是类型级别的相等性(您可以将其编写为=
或的某种变体==
,但据认为该表示法已经具有足够不同的含义,以至于引入另一个含义会造成混淆)。*
是那种类型。所以(~) *
是断言两个(危旧房)类型相同。换句话说,实例也可以这样写:
instance Monad m => LaTeXC (LaTeXT m ())
为什么不呢 好吧,这是一个推理问题。它的编写方式使编译器选择了该实例,即使它尚不知道to的最终参数LaTeXT
是()
,然后强制执行该操作,而建议的替代实例将只是抱怨。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句