![](/img/trans.png)
[英]What does a “monadic structure” and “element of a structure” precisely mean in the context of arbitrary Monad?
[英]What does this context mean: (Monad m, (~) * a ())?
我發現了以下類實例:( (Monad m, (~) * a ()) => LaTeXC (LaTeXT ma)
,但不太了解它的上下文。
(~) * a ()
是什么意思? 我在哪里可以閱讀它?
(~)
是類型級相等(你可以把它寫成=
或==
一些變體,但是意見是這個符號已經有足夠的不同含義引入另一個會令人困惑)。 *
是那種類型。 所以(~) *
是兩個(可居住)類型相等的斷言。 換句話說,實例也可以這樣寫:
instance Monad m => LaTeXC (LaTeXT m ())
為什么不呢? 嗯,這是一個推理問題。 它的編寫方式使得編譯器選擇這個實例,即使它還沒有(還)知道LaTeXT
的最后一個參數是()
,然后強制那個,而建議的替代實例只會抱怨。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.