Hat jemand ein voll ausgearbeitetes Beispiel einer Scala-Monade, die ein reales Problem löst und Vergleiche mit demselben in Java geschriebenen Code hat?Scala Monad - Voll funktionsfähiges Beispiel
Antwort
Alle Sammlungen sind Monaden (das ist eine allgemeine Aussage, keine Scala-spezifische), oder "haben Monaden" abhängig davon, wie streng Sie darüber sein wollen. Scala hat auch Option
als Monade, und die rechten und linken Projektionen von Either
sowie. Du kannst ihre monadischen Aspekte bei der Arbeit sehen, wenn du ein Verständnis für sie siehst.
Ein subtileres Beispiel für Monaden in Scala sind die Parser-Kombinatoren. Es ist subtiler, weil die Operatoren die monadischen Operationen hinter Synonymen verbergen, die in einer Grammatik besser aussehen.
def optionAdd(x:Option[Int], y:Option[Int]):Option[Int] =
for(xx <- x; yy <- y) yield xx+yy
wage ich keine Zeit mit der Java-Version zu verlieren, besonders, weil jemand sehr schlauer als ich schon http://functionaljava.org/examples/1.5/#Option.bind tat. Das Beispiel in Verbindung tut im Grunde, was optionAdd
in einer unendlich weniger präzisen Weise tut.
siehe http://jazzy.id.au/default/2012/11/02/scaling_scala_vs_java.html
Eg Anruf async Monaden zu vier Clients:
for {
user <- getUserById(id)
orders <- getOrdersForUser(user.email)
products <- getProductsForOrders(orders)
stock <- getStockForProducts(products)
} yield stock
Futues sind monadische und für Comprehensions verwendet werden können asynchronen Code
in Java gut zu komponieren ... Start Warten Monads with Java 8
- 1. mod_rewrite ist nicht voll funktionsfähiges
- 2. Monad-Eigenschaft in Scala
- 3. Beispiel für die Verwendung von Scalaz Monad
- 4. Beispiel für einen großen Monad-Stack
- 5. Ich habe ein voll funktionsfähiges Programm, das ich in 3 Methoden teilen muss
- 6. Spring Boot voll REST CRUD Beispiel
- 7. Dokumentation Routing-Beispiel nicht voll funktionsfähig
- 8. Comonad Beispiel in Scala
- 9. Scala Versand Beispiel
- 10. Complete "Scala Logging" Beispiel
- 11. Monad Transformatoren Monad Duplizierung
- 12. Wie kann man seine eigene scala monad verstehen?
- 13. Haskell's Monad vs APL's Monad
- 14. Wie vermeidet man Tread-Stepping mit Monad Transformers in Scala?
- 15. Was ist in Java monad analog?
- 16. JsResult - Monad oder Applicative?
- 17. Embedded Scala REPL Interpreter Beispiel für 2.10
- 18. Beispiel Hilfe bei Scala Variablen benötigt
- 19. scala/lift Beispiel für die Formularverarbeitung
- 20. Die Pause monad
- 21. Unterschied zwischen Par Monad und Eval Monad mit deepseq
- 22. Monad Stack Penetration Klassen mit Free/Operational Monad Transformers?
- 23. Übersetzen von Monad zu Applicative
- 24. Kann ich Monad-Transformatoren verwenden, um diese Zusammensetzung zu vereinfachen?
- 25. Haskell Quine: "ap" Monad
- 26. Monad Transformatoren und Hubfunktion
- 27. Besondere Monad. Haskell
- 28. Prompt Monad in Purescript
- 29. Ableitung von Free Monad
- 30. Monad Transformator für NonEmptyList?
Obwohl nicht ein Beispiel für eine Skala, ist dies eine ziemlich eingehende Studie der Maybe Monade in Java (mit einigen Haskell Nr tes, um zu sehen, wie leistungsfähigere Sprachen damit umgehen können): http://logicaltypes.blogspot.com/2011/09/monads-in-java.html –
Hat das jemand nicht? –
Das Konzept von Monad ist nicht so seltsam, wie es scheint (oder sein Name scheint es). Diese Terminologie aus der Kategorientheorie ist im besten oder schlechtesten Sinne sehr praktisch, aber der Zeitgeist der heutigen Programmierung besteht darin, die Theorie stark zu betonen (oder sogar abzuschaffen). Das ist meiner Meinung nach eine Schande und disqualifiziert Software aus dem Bereich "Engineering" –