Beispiele für eine Monade, deren Anwendungsteil besser optimiert werden kann als der Monadenteil
In einer Diskussion habe ich das gehörtApplicative
Schnittstelle einiger Parser ist anders implementiert, effizienter als ihreMonad
Schnittstelle. Der Grund ist, dass mitApplicative
Wir kennen alle "Effekte" im Voraus, bevor die gesamte effektive Berechnung ausgeführt wird. Bei Monaden können die Effekte während der Berechnung von Werten abhängen, sodass diese Optimierung nicht möglich ist.
Ich würde gerne einige gute Beispiele dafür sehen. Es kann ein sehr einfacher Parser oder eine andere Monade sein, das ist nicht wichtig. Das Wichtige ist, dass dieApplicative
Schnittstelle einer solchen Monade entspricht seinerreturn
undap
, aber mit demApplicative
Erzeugt effizienteren Code.
Aktualisieren: Zur Verdeutlichung: Ich interessiere mich hier nicht für Bewerber, die keine Monaden sein können. Die Frage handelt von Dingen, die beides sind.