Wie injiziere ich einen Wert in ein Monoid?

7

Es ist mir gerade aufgefallen, dass es keine Möglichkeit gibt, einen einzelnen Wert in ein Monoid in Data.Monoid zu injizieren. Ich zögere, Data.Monad.return dafür zu verwenden, aber ich habe gehofft, etwas wie singleton für verschiedene Typen zu finden.

    
fho 01.07.2013, 09:55
quelle

2 Antworten

15

Die Klasse Monoid erlaubt keine Injektion, da das Monoid keine Art von Container ist. Einige Behälter sind Monoide, und dann haben sie ihre eigenen Mittel zur Injektion. Für eine relativ allgemeine Injektion können Sie pure von Applicative oder return von Monad verwenden (ersteres ist allgemeiner).

    
augustss 01.07.2013, 09:59
quelle
6

Hinzufügen zu dem, was andere gesagt haben: Int bildet ein Monoid (auf verschiedene Arten). Wie würdest du einen Wert in Int "injizieren"? Nun, du tust es nicht; Ein Int ist nur ein Int . Du könntest vielleicht Null oder etwas verwenden ...?

Wenn nun etwas ein Container ist, bildet es ein Monoid. Aber das Monoid-Bit hilft Ihnen nicht, es als einen Behälter zu behandeln; Sie müssen etwas anderes dafür versuchen. Viele Dinge, die keine Container sind, bilden Monoide.

    
MathematicalOrchid 02.07.2013 07:49
quelle

Tags und Links