2016-06-25 8 views
7

Ich habe in letzter Zeit über arrows gelesen, ein Konzept, das vor mehr als 10 Jahren erfunden wurde. Es ermöglicht mehr statische Informationen über Berechnungen im Vergleich zu Monaden zu erhalten, während die Rechenleistung immer noch von den vorherigen abhängig ist.Gute Beispiele auf dem neuesten Stand der Arrows in Aktion?

Allerdings konnte ich nicht finden sie in den letzten State-of-the-Art-Bibliotheken verwendet. Zum Beispiel hat attoparsec nicht einmal eine Arrow Instanz, obwohl Pfeile entworfen wurden, um das Parsing zu beschleunigen.

Gibt es einige nette Beispiele für Pfeile, die in derzeit entwickelten Bibliotheken oder ausführbaren Dateien verwendet werden, die Leistung oder andere Vorteile bringen?

(Ich verstehe, dass diese Art von einer weichen Frage ist - mein Ziel ein besseres Verständnis des Konzepts und seine Vorteile zu erhalten ist.)

+0

Ich fand heraus, dass [_Netwire_] (https://wiki.haskell.org/Netwire) ein schönes Beispiel ist. Insbesondere [Wire] (https://hackage.haskell.org/package/netwire-5.0.1/docs/Control-Wire-Core.html#t:Wire) implementiert bis zu "ArrowChoice", aber nicht "Monad" '. –

Antwort

1

Kasse this tutorial für opaleye. Pfeile werden weitgehend (zusätzlich zu profunctors) verwendet. Die Bibliothek bietet eine Möglichkeit, komponierbare, typsichere Postgres-Abfragen zu schreiben. Ich habe nicht viel Erfahrung damit, aber es scheint, als wäre es eine gut gestaltete Bibliothek, und ist vermutlich eine gute Wahl, wenn Sie Postgres im Backend verwenden. Ben Kolera hat eine gute Einführung in die Bibliothek here.

Verwandte Themen