Poiché ogni Monad
è un Monoid
sull'operazione di sequenziamento. Perché l'Monoid
non eredita Monoid
in haskell?Ogni monade è monoide?
9
A
risposta
12
Non deve necessariamente essere un Monad
, questo funziona per ogni Applicative
. Quindi sì, è possibile definire:
class (Functor f, Monoid (f())) => Applicative f where
Ma questo significa che si dovrà fornire l'istanza Monoid
ogni volta che si scrive un'istanza Applicative
. Questo può essere abbastanza fastidioso, certamente dal momento che questa istanza Monoid
non viene utilizzata molto spesso.
Una soluzione migliore consiste nel creare un wrapper newtype attorno a f()
e quindi è possibile fornire un'istanza Monoid
per tutti i funtori applicativi una volta per tutte. Ce n'è uno prontamente disponibile in the reducers package.
Problemi correlati
- 1. Come scegliere la moltiplicazione monoide invece di aggiunta monoide?
- 2. Haskell: Monade di monade
- 3. String visto come un Monoide
- 4. Ogni monade gratis su un ??? il functor produce una comonade?
- 5. Monade di Haskell contro Monade di APL
- 6. elenco indicizzazione con Control.Lens richiede Monoide vincolo
- 7. Commutativo monoide dal pacchetto 'algebra' su Hackage
- 8. Perché Scalas non è una monade?
- 9. Scala IO monade: qual è il punto?
- 10. Non è una monade, ma che cos'è?
- 11. QuickCheck Gen non è una monade
- 12. Perfezionamento monade "interfaccia" "interfaccia"
- 13. Stampa la monade gratuita
- 14. Utilizzo di una monade all'interno della monade IO
- 15. Escaping dalla monade IO all'interno della monade Continuazione
- 16. Sottostante Parsec Monade
- 17. Monade trait in Scala
- 18. Ricorsione in una monade
- 19. Monade in JavaScript?
- 20. parzialità Monade Transformer
- 21. Manipolare lo stack monade
- 22. StackOverflow in continuazione monade
- 23. Derivazione di Free Monade
- 24. Qual è la differenza tra una monade e una chiusura?
- 25. Perché free non è monade esempio nel Scalaz 7.1.5?
- 26. Perché la monade dello stato non è attraversabile?
- 27. tipi esistenziale e trasformatori monade
- 28. mappe Haskell ritorno una monade
- 29. Monade vincolanti in compositi (Haskell)
- 30. Variabili globali e lettore monade
Che cosa intendi esattamente con "operazione di sequenziamento" qui? –
@Rhymoid: Sono abbastanza sicuro che sia '>>'. –
@TikhonJelvis: una forma limitata di '>>', giusto? –