Monad
是一個幺半羣,但它是一個幺半羣,與Integer
不同。我想知道是否有辦法編寫Monoid'
和Monad'
,這樣Integer
和Monad'
都可以表示爲類型相同的Monoid'
的實例?instance Monoid Monad
10
A
回答
4
我在Tikhon的要求下將我的評論變成了答案。 This blog post顯示如何使用類型多態性在相同類型類下統一Monad
和Monoid
。這與Tel的回答略有不同,因爲monad是作爲endofunctors類別中的monoid實現的,而不是Kleisli類別中的monoid。
+0
這就是你如何做*那* Monoid!我昨天晚上不想通過類比微積分工作。 –
+0
鏈接已死亡。 – user2023370
7
所以,讓我們選擇一個特定的方式Integer
有Monoid
instance Monoid Int where
zero = 0
plus = (+)
,現在這裏是一個Monad
Monoid
{-# LANGUAGE FlexibleInstances #-}
instance Monad m => Monoid (Kleisli m a a) where
zero = id
plus = (.)
和這裏的另一個
instance MonadPlus m => Monoid (m a) where
zero = mzero
plus = mplus
我不知道如何表達「Monad是c中的幺半羣然而,在Haskell中,內部管理員的構想是不可能的。
相關問題
- 1. 每個monad都是monoid?
- 2. Scala中的monoid vs monad
- 3. 作家Monad嵌套兩次
- 4. 使用Number作爲Monoid
- 5. 在Writer monad中交換`mappend`
- 6. jQuery是一個monad
- 7. 一個類型的實例化Monoid
- 8. 如何選擇乘法monoid而不是加法monoid?
- 9. 在IO monad中使用monad
- 10. Partiality Monad Transformer
- 11. Monad堆棧滲透類與免費/操作Monad變壓器?
- 12. 型`instance`在python
- 13. Single,global,object instance
- 14. sql show current instance
- 15. $ ini =&eZINI :: instance();
- 16. java.lang.NoSuchFieldError的:INSTANCE
- 17. instance :: class.java vs. instance.javaClass
- 18. Scala PartialFunction可以是Monoid?
- 19. 如何將值注入Monoid?
- 20. 是否有一個Monoid相當於Bifunctor?
- 21. 爲什麼Int不執行'Monoid'?
- 22. 在Haskell中使用Maybe編寫Maximum Monoid
- 23. 對一個錯誤monad證明了一些monad法我寫了
- 24. Writer Monad保證正確的關聯級聯嗎?
- 25. xforms「instance namespace」問題
- 26. Zoom monad stack maintain context
- 27. monad在monad變壓器上下文
- 28. Markup monad如何與Html monad關聯?
- 29. 帶有標識monad的Monad變壓器
- 30. 定義類型爲Monad的
我想你想閱讀[此博客文章](http://www.jonmsterling.com/posts/2012-01-12-unifying-monoids-and-monads-with-polymorphic-kinds.html)解釋如何使用類型多態來統一兩個相同類型的類。 –
@GabrielGonzalez:你可以把它變成答案嗎?根據我的理解,它實際上回答了問題,與當前的答案不同。 –