簡體   English   中英

這個背景意味着什么:( Monad m,(〜)* a())?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM