5
A
回答
2
一般來說,您可以通過ContT r m
得到的唯一值是類型m r
。的Run (ContT r)
類型簽名將是
Run (ContT r) = forall n b. Monad n => ContT r n b -> n (StT (ContT r) b)
這相當於
forall n b. ((b -> n r) -> n r) -> n (StT (ContT r) b)
唯一可能的類型爲StT (ContT r) b
是r
,但即使這樣,還有b -> n r
類型的沒有可能的定義的函數傳遞到ContT
。並且由於liftWith
被賦予了一個需要Run (ContT r)
類型值的功能,因此無法實現。
restoreT
使情況更糟,因爲可能從一般ContT r m a
中提取的任何值都不能轉回ContT r m a
。所以你失去了來來往往。
順便說一句,這也是您無法制作ContT
a MonadFix
的原因。您不能將任意a
轉換爲任意r
,反之亦然。
相關問題
- 1. 用於ProxyFast/ProxyCorrect的MonadTransControl實例
- 2. 爲什麼實例沒有屬性?
- 3. 爲什麼ImageView沒有被實例化?
- 4. AccValidation爲什麼沒有Monad實例?
- 5. 爲什麼SessionMap沒有實例化?
- 6. MariaDB RDS實例「填滿」沒有什麼
- 7. 爲什麼Shake沒有爲Action提供MonadMask實例?
- 8. 爲什麼我的實例沒有名稱
- 9. 爲什麼我的工廠沒有被實例化/注入?
- 10. 爲什麼BroadcastReceiver在沒有實例的情況下工作?
- 11. 爲什麼沒有發現這個謂詞的實例?
- 12. 爲什麼rails中的實例變量沒有@符號?
- 13. 爲什麼CefSharp.WebBrowserExtensions.SetZoomLevel影響所有實例?
- 14. 爲什麼只有一個HTTPClient實例?
- 15. 爲什麼數組實例中沒有內置Array方法?
- 16. Spring沒有正確實例化一個對象。爲什麼?
- 17. 爲什麼沒有功能顯示實例?
- 18. 爲什麼實例方法沒有按預期工作?
- 19. 爲什麼Conduit和Pipe沒有Arrow實例?
- 20. 爲什麼這個實例變量沒有遞增?
- 21. 爲什麼python實例沒有__name__屬性?
- 22. 爲什麼這個HasField實例沒有被解析?
- 23. 爲什麼JsArrayString沒有實現迭代?
- 24. 爲什麼LinkedHashMap沒有實現SortedMap?
- 25. 爲什麼AbstractAction沒有實現actionPerformed()?
- 26. 爲什麼ArrayList沒有實現隊列?
- 27. WhereSelectArrayIterator爲什麼沒有實現ICollection?
- 28. 爲什麼AbstractCollection沒有實現equals()?
- 29. 爲什麼java.util.TreeMap.KeySet沒有實現equals?
- 30. 爲什麼我的方法沒有返回任何有效的SQL Server實例?
我認爲這個評論[在'ContT'的定義](https://hackage.haskell.org/package/transformers-0.5.2.0/docs/Control-Monad-Trans-Cont.html#t:ContT )是相關的:「'ContT'不是單子類的函數,許多操作不能通過它來解除」。你甚至不需要'm'成爲'Monad'就可以擁有'Monad(ContT k r m)'! – Alec
@Alec這絕對會讓它變得很奇怪,但它不會將它與'MonadTransControl' –