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?
Antwort
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.
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
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
'zurück. extrahiere $ nonEmpty [1,2,3] 'ergibt' nonEmpty [1] '. – leftaroundabout
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.
- 1. Ist die Liste eine Monade und comonad?
- 2. Gibt es eine Scala-Bibliothek, die Tupel als Monade behandelt?
- 3. Gibt es einen Begriff für eine endliche Zustandsmaschine, die garantiert zum Stillstand kommt?
- 4. Applicative ist zu monad, was X zu comonad ist
- 5. Comonad doppelte Funktion
- 6. Ist Polymorphismus ein anderer Begriff für Überladung?
- 7. Gibt es einen Begriff für die Navbar mit einem Streifen darunter?
- 8. Gibt es eine Queue (PriorityQueue) Implementierung, die auch ein Set ist?
- 9. Jede Monade ist ein Monoid?
- 10. Gibt es einen Inhaltstyp für ein NRL?
- 11. Es ist keine Monade, aber was ist es?
- 12. Gibt es ein Klickverhalten für eine Liste?
- 13. Ist "string-free coding" ein häufiger Begriff?
- 14. Gibt es einen spezifischen Begriff für das Builder-Muster, bei dem jede Methode 'this' zurückgibt?
- 15. Ist es eine Monade versuchen, wenn Einheit = Erfolg?
- 16. Warum ist die Zustands-Monade nicht verfahrbar?
- 17. Was ist ein guter allgemeiner Begriff für Fehler und Warnungen?
- 18. MonadTransControl Beispiel für eine benutzerdefinierte Monade
- 19. einen Begriff in lucene
- 20. Gibt es eine matplotlib, die für ReportLab fließfähig ist?
- 21. Gibt es eine Syntax für einen tr-linienspezifischen CSS-Selektor?
- 22. Mehrere FlatMap-Methoden für eine einzelne Monade?
- 23. Gibt es eine Spezifikation für die Förderung eines Release-Kandidaten?
- 24. Gibt es eine Möglichkeit herauszufinden, ob ein Thread blockiert ist?
- 25. Begriff für reflektierendes Web
- 26. die Bindungsstruktur in einem freien Monade Prüfungs AST
- 27. Gibt es eine Möglichkeit, einen Compilator in ein Programm einzubinden?
- 28. Comonad Beispiel in Scala
- 29. Gibt es eine gute Lösung für einen C# html Sanitizer?
- 30. Gibt es einen Standardplatz für die Versionsnummer im Quellcode?
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
@KeshavKini: dieser Begriff von Bimonad wäre inkompatibel mit [bifunctors] (http://hackage.haskell.org/package/bifunctors/docs/Data-Bifunktor.html#t:Bifunctor). – leftaroundabout
... 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