(forall m. (MonadCo r m, MonadReader Int m) => m())
-> (forall m. (MonadCo r m, MonadReader Int m) => m())
的功能(MonadCo
是代表協程單子我自己的類型類。如果你喜歡,你可以考慮的情況下MonadError e m
來代替。這個問題將是相同的。)
似乎像我應該能夠具體化的約束,並與像
(Equals k (MonadCo r, MonadReader Int))
=> (Constrain k()) -> (Constrain k())
與簽名類型的函數結束了,但我不知道如何去執行這一實踐。我完全不知道:-
和:=>
究竟是什麼。我想我也需要一個Forall1
在那裏,因爲我普遍量化m
,但我不知道它應該在哪裏。
真的我想要做的是通過forall m. (MonadCo r m, MonadReader Int m)
約束。我認爲,當我這樣做的時候,無論結果出現在左邊什麼都會自動成爲「正確的事情」。
Data.Constraint
看起來非常強大,但我無法確定從哪裏開始。
這當然有可能。而且你不需要像':'或'Forall1'這樣的可怕東西。 – MigMit