2014-11-27 6 views
7

Ich frage mich nur, ob es einen kurzen Begriff für etwas gibt, das sowohl eine Monade als auch ein Comonad ist. Ich habe etwas gesucht, und ich weiß these structures exist, aber ich habe keinen Namen für sie gefunden.Gibt es einen Begriff für eine Monade, die auch ein comonad ist?

+1

Etwas, das sowohl ein X als auch ein Co-X ist, wird oft als "Bi-X" bezeichnet, also vielleicht als "Bimonad"? Ich weiß nicht, ob die Leute tatsächlich das Wort "Bimonad" benutzen. – kini

+1

@KeshavKini: dieser Begriff von Bimonad wäre inkompatibel mit [bifunctors] (http://hackage.haskell.org/package/bifunctors/docs/Data-Bifunktor.html#t:Bifunctor). – leftaroundabout

+1

... fragen Sie nach dem Konzept der Kathegorie-Theorie? In diesem Fall ist Ihre Frage völlig off-topic und sollte auf der Computer Science.SE gestellt werden. Wenn du fragst, ob es Typ-Klassen für so etwas gibt, * state so *, damit deine Frage programmierbezogener wird, obwohl ich immer noch bezweifele, dass es am Thema interessiert wäre, da es sich im Grunde um eine externe Ressourcen-Suche handeln würde. – Bakuriu

Antwort

0

Soweit ich weiß, gibt es keinen Begriff, um es zu definieren, weil ein Monad-Comonad nichts erzwingen würde: Sie können immer eine return zum Einsteigen oder eine extract aussteigen.

Da Typen einige Einschränkungen erzwingen, würde eine zu permissive Einschränkung keinen Nutzen haben. Da niemand es benutzen würde (außer der Identität), hat sich wahrscheinlich niemand darum gekümmert, es zu benennen.

+0

Ich sehe dein Argument nicht. Du scheinst zu sagen, es gibt keine interessanten Monaden, die auch Comonaden sind. Nun, das ist falsch, [die verknüpfte Frage] (http://stackoverflow.com/questions/16551734/can-a-monad-be-a-comonad) diskutiert solche Funktoren; [Nicht leere Listen] (http://hackage.haskell.org/package/semigroups-0.16.1/docs/Data-List-NonEmpty.html) sind das offensichtliche Beispiel. Auf jeden Fall brauchen 'return' und' extract' keine besondere Beziehung, keiner kennt den anderen. Ich nehme 'Auszug. return 'wird immer' id' sein, aber 'return. Extrakt "ist keineswegs trivial. – leftaroundabout

+0

Daran habe ich nicht gedacht, könnten Sie ein minimales Beispiel für die Rückkehr der Nicht-Identität zeigen? extrahieren? Ich bin nicht gut mit Haskell und kann durch diese interessante Diskussion nicht zu einem kommen. (Ich mache dieses Frage-Wiki so, dass es leicht bearbeitet werden kann (nun, ich bin noch neu in der SO-Politik, also bin ich mir nicht sicher, ob es so ist) – PatJ

+1

'zurück. extrahiere $ nonEmpty [1,2,3] 'ergibt' nonEmpty [1] '. – leftaroundabout

1

Eine solche Kreatur, die bestimmten Bedingungen unterliegt, wird manchmal als "Hopf-Monade" oder "Bimonad" (http://ncatlab.org/nlab/show/Hopf+monad) bezeichnet.

Allerdings erfordert dies auch die Erfüllung einer Reihe von Axiomen hinsichtlich der Verteilungseigenschaften, und ich habe nicht gesehen, dass es in einem bestimmten Programmierkontext auftaucht.

Verwandte Themen