Monad
jest monoidem, jednak jest monoidem w inny sposób niż, powiedzmy, Integer
. Zastanawiam się, czy istnieje sposób na napisanie Monoid'
i Monad'
tak, że zarówno Integer
, jak i Monad'
mogą być wyrażone jako instancje tej samej czcionki typowej Monoid'
?instancja Monofoniczna monada
Odpowiedz
Zmieniam mój komentarz w odpowiedź na prośbę Tichona. This blog post pokazuje, jak ujednolicić Monad
i Monoid
w ramach tego samego typu klasy przy użyciu polimorfizmu rodzajowego. To trochę różni się od odpowiedzi Tela, że monada jest implementowana jako monoid w kategorii endofunktorów, a nie monoidów w kategorii Kleisli.
I tak właśnie robisz * to * Monoid! Nie chciałem wczoraj przejść przez rachunek rodzajowy. –
Link nie działa. – user2023370
Tak, niech wybrać konkretny sposób Integer
ma Monoid
instance Monoid Int where
zero = 0
plus = (+)
i teraz oto Monad
Monoid
{-# LANGUAGE FlexibleInstances #-}
instance Monad m => Monoid (Kleisli m a a) where
zero = id
plus = (.)
i oto kolejny
instance MonadPlus m => Monoid (m a) where
zero = mzero
plus = mplus
nie jestem pewien jak wyrazić "Monada to monoid w c jednak "formułowanie" endofunktów w Haskell.
- 1. Manipulowanie monada stos
- 2. Monada cecha w Scala
- 3. Każda monada jest monoidalna?
- 4. Wywołanie IO Monada wewnątrz strzałki
- 5. instancji Monada do binarnego drzewa
- 6. Tłumaczenie z monada na aplikacyjny
- 7. Może monada wewnątrz stosu transformatorów
- 8. kłopoty ze zrozumieniem Monada (->)
- 9. Może "rodzaj" monada w pytonie
- 10. Jak widelec wewnątrz transformatora monada
- 11. scalaz walidacji i lista monada
- 12. Monada stanowa, dlaczego nie krotka?
- 13. tworzenie wartości monada przed cesją
- 14. Instancja aplikacji IIS AppDomain
- 15. Instancja użytkownika SqlLocalDb
- 16. Jak rozwiązać nakładających instancja
- 17. instancja clojure? pojedynczy argument
- 18. instancja klasy abstrakcyjnej
- 19. Jedna instancja działania
- 20. V8 FunctionTemplate Klasa Instancja
- 21. Haskell'a Monada vs. APL na Monad
- 22. Może monada w Pythonie z metodą łańcuchową
- 23. Aktualizacja zewnętrzną monady tylko w transformatorze monada
- 24. Monada operacyjna z tłumaczem w dowolnej monadzie
- 25. Co pakiet Haskell ma funktor/monada?
- 26. Strict FMap używając tylko funktora, nie monada
- 27. Haskell monada: IO [Double] do [IO Double]
- 28. Podnieś wartość błędu do transformatora monada ErrorT
- 29. Czy istnieje monada Powerset-over-Reader?
- 30. Django Admin - stackedInline pojedyncza instancja
Myślę, że chcesz przeczytać [ten wpis na blogu] (http://www.jonmsterling.com/posts/2012-01-12-unifying-monoids-and-monads-with-polymorphic-kinds.html) wyjaśniając jak wykorzystać rodzaj polimorfizmu do zjednoczenia dwóch w ramach tej samej klasy. –
@GabrielGonzalez: Czy możesz zmienić to w odpowiedź? Właściwie odpowiada na pytanie, tak jak ja to rozumiem, w przeciwieństwie do obecnej odpowiedzi. –